【问题标题】:mocha command giving ReferenceError: window is not definedmocha 命令给出 ReferenceError: 窗口未定义
【发布时间】:2015-12-03 06:58:16
【问题描述】:

我正在使用命令:

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

报错:

ReferenceError: window is not defined

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

require("babel/register")({
  compact: false
});

我正在使用节点 0.12.7 和“mocha”:“^2.2.5”和“jsdom”:“^3.1.2”。

我已经在项目中安装了 jsdom

是什么导致了错误?

【问题讨论】:

  • “babel/register”文件中有什么?
  • 看起来是支持 jsx 的

标签: node.js mocha.js jsdom


【解决方案1】:

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

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

然后将-r jsdom-global/register 添加到您的 mocha 命令行。当您重新运行测试时,window is not defined 错误将消失。

【讨论】:

  • 应该被标记为答案,就像一个魅力,谢谢:)
  • 对于纱线,使用yarn add jsdom jsdom-global -DE
  • 你究竟在哪里“添加 -r jsdom-global/register 到你的 mocha 命令行”?对不起,我在这方面完全是菜鸟。
  • 如果您尝试使用 localStorage 则不起作用
【解决方案2】:

要使用 mocha 测试前端库,您需要节点模块 mocha-jsdom,您可以在此处找到它:https://www.npmjs.com/package/mocha-jsdom

【讨论】:

  • 我查看了它不支持节点 0.12.7 并且需要 io.js 的包
  • 哦,我很抱歉。我们使用节点 4.0.0。是否没有为您考虑更新?
  • 实际上已经弃用了
【解决方案3】:

由于我对 window 对象做的太多,我只是用这段代码来确定我是否在 mocha 中。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-30
    • 2020-10-08
    • 2018-05-27
    • 2020-09-18
    • 2016-01-05
    • 2020-11-12
    • 2018-10-29
    相关资源
    最近更新 更多