Javascript ';引用错误:未定义文档';错误

Javascript ';引用错误:未定义文档';错误,javascript,node.js,mocha.js,jsdom,Javascript,Node.js,Mocha.js,Jsdom,我试图将Mocha集成到我的应用程序中,但得到的文档未定义错误。我还尝试集成JSDOM来解决这个问题,但没有成功。也许我的实现是错误的。提前谢谢 注意:我正在本地进行测试,但稍后将在AmazonEC2上进行测试。当在服务器上实时托管时,文档错误会自行消失吗 test.js var test = require('../index.js'); var assert = require('assert'); var jsdom = require('mocha-jsdom'); global.do

我试图将Mocha集成到我的应用程序中,但得到的
文档未定义
错误。我还尝试集成JSDOM来解决这个问题,但没有成功。也许我的实现是错误的。提前谢谢

注意:我正在本地进行测试,但稍后将在AmazonEC2上进行测试。当在服务器上实时托管时,文档错误会自行消失吗

test.js

var test = require('../index.js');
var assert = require('assert');
var jsdom = require('mocha-jsdom');

global.document = jsdom();

describe('Mutliply', function() {
  jsdom();
  it('should equal 9 when multiply is called', function() {
    assert.equal(9, test.multiply());
  });
});
index.js

'use strict';

let test = {};

let movieList = document.getElementById('movie-list');
//bunch of code

test.multiply = function() {
  return 3*3;
}

module.exports = test;

问题是,在声明文档之前,您需要在全局范围内使用
文档
的代码

var assert = require('assert');
var jsdom = require('mocha-jsdom');

global.document = jsdom();

var test = require('../index.js');

describe('Mutliply', function() { ...
应该有效,甚至

var assert = require('assert');
var jsdom = require('mocha-jsdom');

global.document = jsdom();

describe('Mutliply', function() {
  var test = require('../index.js');  // late import
  it('should equal 9 when multiply is called', function() {
    assert.equal(9, test.multiply());
  });
});
您可以尝试使用将Dom支持添加到节点:

const jsdom = require("jsdom");
const { JSDOM } = jsdom;
global.document = new JSDOM(html).window.document;

稍后导入它确实解决了文档未定义的问题,但现在,我得到了
类型错误:无法读取未定义的属性“getElementById”。听起来文档还没有定义。mocha jsdom的自述文件说它已经被弃用了——也许可以试试哪一个链接在那里?