Node.js 在节点中运行时导入传单和传单提供程序时出错

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模块导入传单插件,但它在浏览器中

我正在使用es6模块对带有tape+babel register的传单应用程序进行单元测试,我得到了

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');