Mocha命令出现ReferenceError: window is not defined错误

39

我正在使用命令:

mocha --compilers :./test/babel-setup.js --recursive --watch

它正在报错:

ReferenceError: window is not defined

我在我的babel-setup.js文件中有以下内容:

require("babel/register")({
  compact: false
});
我正在使用node 0.12.7、"mocha": "^2.2.5"和"jsdom": "^3.1.2"。 我已经在项目中安装了jsdom。 是什么导致了这个错误?

"babel/register" 文件中包含什么内容? - sachin.ph
看起来它是为了支持JSX而存在的。 - jit
3个回答

97

我能通过使用jsdom-global来解决这个问题。请按照链接中的说明进行安装。具体而言,请运行以下命令:

npm install --save-dev --save-exact jsdom jsdom-global
然后在你的mocha命令行中添加-r jsdom-global/register。当你重新运行测试时,window is not defined错误将消失。

5
应标记为答案,起到很好的作用,谢谢 :) - alek kowalczyk
对于Yarn,请使用yarn add jsdom jsdom-global -DE - axmrnv
你在哪里“将-r jsdom-global/register添加到你的mocha命令行”?抱歉,我是一个彻头彻尾的新手。 - Josh
如果您尝试使用localStorage,它将无法正常工作。 - Adam Fowler

2

我看了一下那个包,它不支持 node 0.12.7 并且需要 io.js。 - jit
哦,对不起。我们使用的是Node 4.0.0版本。你们不考虑升级吗? - Henry31
其实它已经过时了。 - Franco Manzur

0

由于我在处理 window 对象时做了太多的事情,所以我只是使用了这段代码来确定我是否在 mocha 中。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接