Javascript nodejs-jsdom模块在请求期间返回isContext()错误

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

我在网上找不到这样的错误,所以我决定在这里发一篇帖子

首先,这是我的package.json代码

{
  "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,选项)