oraoto / pib

PHP in Browser (powered by WebAssembly)
https://oraoto.github.io/pib/
Apache License 2.0
953 stars 109 forks source link

ReferenceError: window is not defined #59

Closed kenorb closed 2 years ago

kenorb commented 2 years ago

I've installed pib as package by:

npm install php-wasm

And I've loaded an instance of the object as per README (into NextJS):

const PHP = require('php-wasm/PhpWeb').PhpWeb;
const php = new PHP;

However I've got the following error:

ReferenceError: window is not defined

What's the best approach to define reference to window?

Call Stack
Object.<anonymous>
node_modules/php-wasm/PhpWeb.js (54:1)
Module._compile
node:internal/modules/cjs/loader (1101:14)
Object.Module._extensions..js
node:internal/modules/cjs/loader (1153:10)
Module.load
node:internal/modules/cjs/loader (981:32)
Function.Module._load
node:internal/modules/cjs/loader (822:12)
Module.require
node:internal/modules/cjs/loader (1005:19)
require
node:internal/modules/cjs/helpers (102:18)
Object.php-wasm/PhpWeb
.next/server/pages/index.js (130:18)
__webpack_require__
.next/server/webpack-runtime.js (33:42)

Affected line (in node_modules/php-wasm/PhpWeb.js):

if (window && document) {
kenorb commented 2 years ago

I think I've got it working by:

import dynamic from 'next/dynamic'
const PhpWeb = dynamic(() => import('php-wasm/PhpWeb'), {
  SSR: false,
})