TypeError: require(...).jsdom 不是一个函数

新手上路,请多包涵

我使用 visual studio 2015 进行 nodejs web 开发。

我有以下用于 nodejs 的包。

  • 正文解析器 1.18.1
  • 快递 4.15.4
  • jQuery 1.7.4
  • HTML 1.0.0
  • jsdom 11.2.0

我的 server.js 是

var http = require('http');
var express = require('express');
var bodyParser = require('body-parser');
var jsdom = require('jsdom');

var path = require('path');
var port = process.env.port || 1337;
var app = express();
app.use(bodyParser());

app.use('/bootstrap', express.static(__dirname + '/public/bootstrap'));
app.use('/css', express.static(__dirname + '/public/css'));
app.use('/jquery', express.static(__dirname + '/public/jquery'));
app.use('/pages', express.static(__dirname + '/public/pages'));
app.use('/popper', express.static(__dirname + '/public/popper'));
app.use('/scripts', express.static(__dirname + '/public/scripts'));

app.get('/', function (request, response) {
var $ = require('jquery');
var title = $(html).find('title').text();
console.log(title);
response.send("Hello node");
});
app.listen(port);

无法使用 jquery 获取错误。 “ TypeError: require(…).jsdom 不是一个函数

 TypeError: require(...).jsdom is not a function
at create (c:\users\XYZ12\documents\visual studio 2015\Projects\NodeMovieList\NodeMovieList\node_modules\jquery\lib\node-jquery.js:5:31)
at c:\users\XYZ12\documents\visual studio 2015\Projects\NodeMovieList\NodeMovieList\node_modules\jquery\lib\node-jquery.js:9435:18
at Object.<anonymous> (c:\users\XYZ12\documents\visual studio 2015\Projects\NodeMovieList\NodeMovieList\node_modules\jquery\lib\node-jquery.js:9437:2)
at Module._compile (module.js:570:32)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
at Function.Module._load (module.js:438:3)
at Module.require (module.js:497:17)
at require (internal/module.js:20:19)

原文由 ssj5 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 608
2 个回答

尝试使用以下,

 var jsdom = require('jsdom');
const { JSDOM } = jsdom;

const { document } = (new JSDOM('')).window;
global.document = document;

参考: https ://github.com/airbnb/enzyme/issues/942#issuecomment-314715229

原文由 Kalana Demel 发布,翻译遵循 CC BY-SA 3.0 许可协议

像下面这样:

 var jsdom = require('jsdom');
const { JSDOM } = jsdom;
const { window } = new JSDOM();
const { document } = (new JSDOM('')).window;
global.document = document;

var $ = jQuery = require('jquery')(window);

希望这对您或任何遇到此类问题的人有所帮助。

原文由 Plabon Dutta 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题