Node.js 传单错误
Node.js Leaflet error
请帮忙!!我知道我遗漏了一些非常简单的东西,但我对这一切都是陌生的,我阅读了很多不同的 post 和教程,并且无法理解错误。
我在 Ubuntu 14.04 启动了一个新项目
导航到我希望我的应用所在的文件夹。
这是我采取的步骤:
sudo apt-get install nodejs-legacy
sudo npm install express-generator -g (framework)
express -e --ejs (Establece el lenguaje ejs como base)
https://www.npmjs.com/package/ejs
npm install
到 运行 应用 DEBUG=myapp:* npm start
然后在您的浏览器中加载 http://localhost:3000/ 以访问该应用程序。
npm install --save leaflet
npm install --save leaflet-draw
到这里一切正常!
在 app.js 中我添加了这一行:
var L = require('leaflet');
并得到我粘贴的丑陋错误
/home/diego/Escritorio/fundacion/node_modules/leaflet/dist/leaflet-src.js:9168
}(window, document));
^
ReferenceError: window is not defined
at Object.<anonymous> (/home/diego/Escritorio/fundacion/node_modules/leaflet/dist/leaflet-src.js:9168:3)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at Object.<anonymous> (/home/diego/Escritorio/fundacion/app.js:10:9)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
npm ERR! weird error 8
npm WARN This failure might be due to the use of legacy binary "node"
npm WARN For further explanations, please read
/usr/share/doc/nodejs/README.Debian
看起来这个模块只适用于浏览器。它在 npm 上,因此您可以使用 browserify 或 webpack
在您的前端要求它
这是Leaflet本身的问题。 Leaflet 尝试加载 DOM 而不检查它是否可用。我想你可以通过在你的应用程序中模拟浏览器来加载传单。
// Create globals so leaflet can load
GLOBAL.window = {};
GLOBAL.document = {
documentElement: {
style: {}
},
getElementsByTagName: function() { return []; },
createElement: function() { return {}; }
};
GLOBAL.navigator = {
userAgent: 'nodejs'
};
GLOBAL.L = require('leaflet');
你也可以看看这个:leaflet-headless
上面 Sk Arif 的回答是在不引入包装器模块的情况下执行此操作的最快方法。
这是我用最新版本的传单(> 1.5.x)实现的,如果没有定义navigator.platform
和window.screen
,你会得到一个错误:
global.window = { screen: {} }
global.document = {
documentElement: { style: {} },
getElementsByTagName: () => { return [] },
createElement: () => { return {} }
}
global.navigator = { userAgent: 'nodejs', platform: 'nodejs' }
const L = require('leaflet')
请帮忙!!我知道我遗漏了一些非常简单的东西,但我对这一切都是陌生的,我阅读了很多不同的 post 和教程,并且无法理解错误。
我在 Ubuntu 14.04 启动了一个新项目 导航到我希望我的应用所在的文件夹。
这是我采取的步骤:
sudo apt-get install nodejs-legacy
sudo npm install express-generator -g (framework)
express -e --ejs (Establece el lenguaje ejs como base)
https://www.npmjs.com/package/ejs
npm install
到 运行 应用 DEBUG=myapp:* npm start
然后在您的浏览器中加载 http://localhost:3000/ 以访问该应用程序。
npm install --save leaflet
npm install --save leaflet-draw
到这里一切正常!
在 app.js 中我添加了这一行:
var L = require('leaflet');
并得到我粘贴的丑陋错误
/home/diego/Escritorio/fundacion/node_modules/leaflet/dist/leaflet-src.js:9168
}(window, document));
^
ReferenceError: window is not defined
at Object.<anonymous> (/home/diego/Escritorio/fundacion/node_modules/leaflet/dist/leaflet-src.js:9168:3)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at Object.<anonymous> (/home/diego/Escritorio/fundacion/app.js:10:9)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
npm ERR! weird error 8
npm WARN This failure might be due to the use of legacy binary "node"
npm WARN For further explanations, please read
/usr/share/doc/nodejs/README.Debian
看起来这个模块只适用于浏览器。它在 npm 上,因此您可以使用 browserify 或 webpack
在您的前端要求它这是Leaflet本身的问题。 Leaflet 尝试加载 DOM 而不检查它是否可用。我想你可以通过在你的应用程序中模拟浏览器来加载传单。
// Create globals so leaflet can load
GLOBAL.window = {};
GLOBAL.document = {
documentElement: {
style: {}
},
getElementsByTagName: function() { return []; },
createElement: function() { return {}; }
};
GLOBAL.navigator = {
userAgent: 'nodejs'
};
GLOBAL.L = require('leaflet');
你也可以看看这个:leaflet-headless
上面 Sk Arif 的回答是在不引入包装器模块的情况下执行此操作的最快方法。
这是我用最新版本的传单(> 1.5.x)实现的,如果没有定义navigator.platform
和window.screen
,你会得到一个错误:
global.window = { screen: {} }
global.document = {
documentElement: { style: {} },
getElementsByTagName: () => { return [] },
createElement: () => { return {} }
}
global.navigator = { userAgent: 'nodejs', platform: 'nodejs' }
const L = require('leaflet')