Nodejs用严格模式解析dom错误

时间:2015-02-27 01:53:25

标签: jquery node.js jsdom

我对nodejs真的很陌生,我在这3-4天内通过速成课程让自己更好一些...尝试运行此代码:

(function () {

    var jsdom = require('jsdom');

    jsdom.env({  
      html: '<html><body><h1>Hello World!</h1><p class="hello">Heya Big World!</body></html>'
      //scripts: [
        //'http://code.jquery.com/jquery-1.5.min.js'
      //]
    }, function (err, window) {
      //var $ = window.jQuery;
         var $ = require('jquery')(window)
      $('body').append("<div class='testing'>Hello World</div>");
      console.log($(".hello").text()); // outputs Hello World
    });

}());

我收到此错误:

/root/node_modules/jsdom/lib/jsdom/living/helpers/validate-names.js:2
const xnv = require("xml-name-validator");
^^^^^
SyntaxError: Use of const in strict mode.
    at exports.runInThisContext (vm.js:73:16)
    at Module._compile (module.js:443:25)
    at Object.Module._extensions..js (module.js:478:10)
    at Module.load (module.js:355:32)
    at Function.Module._load (module.js:310:12)
    at Module.require (module.js:365:17)
    at require (module.js:384:17)
    at Object.<anonymous> (/root/node_modules/jsdom/lib/jsdom/level1/core.js:8:20)
    at Module._compile (module.js:460:26)
    at Object.Module._extensions..js (module.js:478:10

我无能为力地解决它。对不起那个小问题...

2 个答案:

答案 0 :(得分:4)

对我帮助重新安装&#34;最新&#34; jsdom 到旧版&#34; 3.1.2&#34;

1)删除node_modules中的jsdom文件夹

2)将package.json中的依赖项更改为:

"jsdom": "3.1.2"

3)当然,运行&#34; npm install&#34;

希望它对你有所帮助!

答案 1 :(得分:4)

最新版本的jsdom不再适用于Node.js.这是来自他们的github页面。

  

请注意,从我们的4.0.0版开始,jsdom不再适用   Node.js™,而是需要io.js.您仍然可以安装   3.x系列中的一个版本,如果您坚持使用遗留技术   的Node.js™

正如Roman Dunin所说,如果你想将jsdom与Node.js一起使用,请回滚到3.x版本。版本3.1.2是版本4.0.0之前的最后一个版本