Nodejs用严格模式解析dom错误

Posted

技术标签:

【中文标题】Nodejs用严格模式解析dom错误【英文标题】:Nodejs parsing dom error with strict mode 【发布时间】:2015-04-29 15:26:21 【问题描述】:

我真的是 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

我无能为力解决它。抱歉,这个问题很简单......

【问题讨论】:

请参考***.com/questions/22603078/… @ZunedAhmed 我没有使用严格模式,它正在模块中使用... id 真的而不是编辑模块源代码... 请注意,jsdom 不再支持 NodeJS(您可以使用旧版) - jsdom 认为 NodeJS 旧版软件,仅支持 io.js 版本 4。github.com/tmpvar/jsdom/blob/master/Changelog.md 您可以将const 更改为var。如果您使用 --harmony 标志启动 node.js,它也可能会起作用。而且,你运行的是什么版本的 node.js? @jfriend00 谢谢,当我测试它是否正确时我会告诉你,以便你可以添加它作为答案。 【参考方案1】:

帮我把 jsdom"latest" 重新安装到旧版本 "3.1.2"

1) 删除node_modules中的jsdom文件夹

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

"jsdom": "3.1.2"

3) 当然运行“npm install”

希望对你有帮助!

【讨论】:

我在使用 jsdom@3.1.2 版本时遇到了同样的问题。【参考方案2】:

最新版本的 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 版之前的最后一个版本

【讨论】:

以上是关于Nodejs用严格模式解析dom错误的主要内容,如果未能解决你的问题,请参考以下文章

Doctype作用?严格模式与混杂模式如何区分?它们有何意义

Mysql大家是用严格模式还是宽松模式

Doctype作用?严格模式与混杂模式如何区分?它们有何差异?

严格模式和混杂模式

Doctype作用?严格模式与混杂模式如何区分?它们有何意义?

es6要用严格模式