Javascript 在nodejs服务器端运行传单

Javascript 在nodejs服务器端运行传单,javascript,node.js,leaflet,Javascript,Node.js,Leaflet,我试图在nodejs服务器端运行传单,但没有成功。我使用jake构建它,如下载部分所述,但是,当我需要服务器文件上的传单时,如果我启动节点服务器,它会崩溃,并出现以下错误: ReferenceError: window is not defined 谢谢,我知道。但有没有办法在服务器端使用传单?我需要它在L.geojson()上执行一些操作,如果没有“L”引用,我就无法做到这一点 我将感谢任何帮助。 谢谢。香草传单在节点中不起作用。我在这里做了一个包装:您可以通过模拟浏览器在node.js中加

我试图在nodejs服务器端运行传单,但没有成功。我使用jake构建它,如下载部分所述,但是,当我需要服务器文件上的传单时,如果我启动节点服务器,它会崩溃,并出现以下错误:

ReferenceError: window is not defined
谢谢,我知道。但有没有办法在服务器端使用传单?我需要它在L.geojson()上执行一些操作,如果没有“L”引用,我就无法做到这一点

我将感谢任何帮助。
谢谢。

香草传单在节点中不起作用。我在这里做了一个包装:

您可以通过模拟浏览器在node.js中加载传单:

// Create globals so leaflet can load
global.window = {
  screen: {
    devicePixelRatio: 1
  }
};
global.document = {
  documentElement: {
    style: {}
  },
  getElementsByTagName: function() { return []; },
  createElement: function() { return {}; }
};
global.navigator = {
  userAgent: 'nodejs',
  platform: 'nodejs'
};
global.L = require('leaflet');

我将其与一起使用。

似乎是我想要的。我只是在Windows上遇到了一些问题,我错过了一些DEP(MS Visual studio…),但是如果有人有另一个解决方案像这个一样好,我仍然在关注这个线程。感谢传单作者的推荐,多边形中的点只是一些不需要DEP的代码。所以他建议我使用像turf()这样的LIB,避免在服务器端使用传单。问题已解决。您还应在
窗口中添加
devicePixelRatio:1
,并在
navigator
下添加
平台:“nodejs”
,以允许正确加载新版本的传单。“GLOBAL”已被弃用,请使用“GLOBAL”代替
节点--需要节点模块/jsdom GLOBAL/register