Node.js 在节点中运行时导入传单和传单提供程序时出错
我正在使用es6模块对带有tape+babel register的传单应用程序进行单元测试,我得到了Node.js 在节点中运行时导入传单和传单提供程序时出错,node.js,leaflet,es6-modules,Node.js,Leaflet,Es6 Modules,我正在使用es6模块对带有tape+babel register的传单应用程序进行单元测试,我得到了 ReferenceError: L is not defined 在我正在测试的模块中导入传单和传单提供程序时,在传单-providers.js中 testfile.js import L from 'leaflet'; import { provider } from 'leaflet-providers'; 我不完全确定我的语法是否正确,是否可以使用es6模块导入传单插件,但它在浏览器中
ReferenceError: L is not defined
在我正在测试的模块中导入传单和传单提供程序时,在传单-providers.js中
testfile.js
import L from 'leaflet';
import { provider } from 'leaflet-providers';
我不完全确定我的语法是否正确,是否可以使用es6模块导入传单插件,但它在浏览器中对我起作用,并且只有在通过节点运行单元测试时才起作用
为什么传单提供程序在运行节点时无法找到L?在浏览器中,传单附加到
窗口
对象,节点没有该对象。此外,由于所有内容都是一个模块,因此范围仅限于文件级别。节点确实有一个global
对象,尽管这是一个与window
伪等价的对象,但有一些区别
您可能还需要类似jsdom的东西来提供一个窗口对象,以便传单提供者与之交互
我使用Mocha,但以下内容没有给出任何错误,并将providers函数附加到L.tileLayer.providers
:
剧本
index.js
我的jsdom包是jsdom
和jsdomglobal
"mocha": "mocha ./test/index.js -r jsdom-global/register
global.L = require('leaflet');
require('leaflet-providers');