Javascript nodejs-jsdom模块在请求期间返回isContext()错误
我在网上找不到这样的错误,所以我决定在这里发一篇帖子 首先,这是我的package.json代码Javascript nodejs-jsdom模块在请求期间返回isContext()错误,javascript,node.js,ubuntu,jsdom,Javascript,Node.js,Ubuntu,Jsdom,我在网上找不到这样的错误,所以我决定在这里发一篇帖子 首先,这是我的package.json代码 { "name": "learning_nodejs", "version": "0.0.0", "description": "", "main": "script.js", "dependencies": { "optimist": "~0.6.1", "jquery": "~2.1.3", "jsdom": "*" }, "devDepend
{
"name": "learning_nodejs",
"version": "0.0.0",
"description": "",
"main": "script.js",
"dependencies": {
"optimist": "~0.6.1",
"jquery": "~2.1.3",
"jsdom": "*"
},
"devDependencies": {},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "BSD-2-Clause"
}
接下来,这是我试图在script.js中运行的javascript
var argv = require('optimist').argv;
var jsdom = require("jsdom");
var $ = require('jquery')(jsdom.jsdom().parentWindow);
var fs = require('fs');
var file = argv._[0];
var html = fs.readFileSync(file, 'UTF-8');
console.log(html);
当我进入这两个文件的目录时,我运行nodejs script.js page.html并返回以下错误:
daniel@daniel-VirtualBox:~/Desktop/virtual_share/javascript_stuff/learning_nodejs$ nodejs script.js page.html
/home/daniel/Desktop/virtual_share/javascript_stuff/learning_nodejs/node_modules/jsdom/lib/jsdom/level1/core.js:287
!vm.isContext(this._ownerDocument._global)) {
^
TypeError: Object function Script(code, ctx, filename) {
if (!(this instanceof Script)) {
return new Script(code, ctx, filename);
}
var ns = new binding.NodeScript(code, ctx, filename);
// bind all methods to this Script object
Object.keys(binding.NodeScript.prototype).forEach(function(f) {
if (typeof binding.NodeScript.prototype[f] === 'function') {
this[f] = function() {
if (!(this instanceof Script)) {
throw new TypeError('invalid call to ' + f);
}
return ns[f].apply(ns, arguments);
};
}
}, this);
} has no method 'isContext'
at Object.core.DOMImplementation._addFeature (/home/daniel/Desktop/virtual_share/javascript_stuff/learning_nodejs/node_modules/jsdom/lib/jsdom/level1/core.js:287:15)
at Object.exports.applyDocumentFeatures (/home/daniel/Desktop/virtual_share/javascript_stuff/learning_nodejs/node_modules/jsdom/lib/jsdom/browser/documentfeatures.js:45:30)
at Object.exports.jsdom (/home/daniel/Desktop/virtual_share/javascript_stuff/learning_nodejs/node_modules/jsdom/lib/jsdom.js:62:12)
at Object.<anonymous> (/home/daniel/Desktop/virtual_share/javascript_stuff/learning_nodejs/script.js:3:33)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)
daniel@daniel-VirtualBox:~/Desktop/virtual\u share/javascript\u stuff/learning\u nodejs$nodejs script.js page.html
/home/daniel/Desktop/virtual_share/javascript_stuff/learning_nodejs/node_modules/jsdom/lib/jsdom/level1/core.js:287
!vm.isContext(此._所有者文档._全局)){
^
TypeError:对象函数脚本(代码、ctx、文件名){
如果(!(此脚本实例)){
返回新脚本(代码、ctx、文件名);
}
var ns=new binding.NodeScript(代码、ctx、文件名);
//将所有方法绑定到此脚本对象
key(binding.NodeScript.prototype).forEach(函数(f){
if(binding.NodeScript.prototype[f]='function'的类型){
此[f]=函数(){
如果(!(此脚本实例)){
抛出新的TypeError('对'+f'的调用无效);
}
返回ns[f]。应用(ns,参数);
};
}
},这个);
}没有方法“isContext”
在Object.core.domplementation.\u addFeature(/home/daniel/Desktop/virtual\u share/javascript\u stuff/learning\u nodejs/node\u modules/jsdom/lib/jsdom/level1/core.js:287:15)
在Object.exports.applyDocumentFeatures(/home/daniel/Desktop/virtual_share/javascript_stuff/learning_nodejs/node_modules/jsdom/lib/jsdom/browser/documentfeatures.js:45:30)
在Object.exports.jsdom(/home/daniel/Desktop/virtual_share/javascript_stuff/learning_nodejs/node_modules/jsdom/lib/jsdom.js:62:12)
在对象上。(/home/daniel/Desktop/virtual\u share/javascript\u stuff/learning\u nodejs/script.js:3:33)
在模块处编译(Module.js:456:26)
在Object.Module.\u extensions..js(Module.js:474:10)
在Module.load(Module.js:356:32)
在Function.Module.\u加载(Module.js:312:12)
位于Function.Module.runMain(Module.js:497:10)
启动时(node.js:119:16)
另外,如果有必要的话,我正在虚拟机上运行Ubuntu 14.04。提前感谢!这里有两个错误,它们都是相关的 首先,我使用nodejs而不是node来运行我的应用程序。我不知道为什么,但我认为这是因为apt-get,所以我使用nvm来安装nodejs,解决了这个问题,但导致了另一个非常类似的问题 显然,在jsdom版本4.0+之后,jsdom不适用于nodejs,所以我得到了一个较旧的版本,现在一切都正常了。什么是
jsdom.jsdom().parentWindow
应该做的,你没有传递任何东西,它通常是jsdom.jsdom(html,选项)
?