Node.js mocha命令提供引用错误:未定义窗口

Node.js mocha命令提供引用错误:未定义窗口,node.js,mocha.js,jsdom,Node.js,Mocha.js,Jsdom,我正在使用命令: mocha --compilers :./test/babel-setup.js --recursive --watch 这是一个错误: ReferenceError: window is not defined 我的babel-setup.js中有以下内容: require("babel/register")({ compact: false }); 我正在使用节点0.12.7和“摩卡”:“^2.2.5”和“jsdom”:“^3.1.2” 我已经在项目中安装了jsd

我正在使用命令:

mocha --compilers :./test/babel-setup.js --recursive --watch
这是一个错误:

ReferenceError: window is not defined
我的babel-setup.js中有以下内容:

require("babel/register")({
  compact: false
});
我正在使用节点0.12.7和“摩卡”:“^2.2.5”和“jsdom”:“^3.1.2”

我已经在项目中安装了jsdom


导致错误的原因是什么?

要使用mocha测试前端库,您需要在此处找到的node modul mocha jsdom:

我可以使用它来解决此问题。按照该链接中的说明进行安装。具体来说,运行

npm install --save-dev --save-exact jsdom jsdom-global

然后将
-r jsdom global/register
添加到您的mocha命令行中。当您重新运行测试时,
窗口未定义
错误将消失。

因为我对窗口对象做了太多的操作,所以我只使用此代码来确定我是否在摩卡

function isMocha(){
    let context = (global || window);
    return ['afterEach','after','beforeEach','before','describe','it'].every(function(functionName){
        return context[functionName] instanceof Function;
    });
}

“babel/register”文件中有什么?看起来它是用于jsx支持的我查看了该包,它不支持节点0.12.7,需要io.jsoh,对此我很抱歉。我们使用节点4.0.0。您是否不考虑更新?实际上,不推荐将其标记为一个答案,效果很好,谢谢:)对于Thread,使用
Thread add jsdom jsdom global-DE
您在哪里“将-r jsdom global/注册到您的摩卡命令行”?对不起,我完全不知道这件事。如果你试图使用本地存储,它就不起作用