【问题标题】:Running Javascript code through NodeJS通过 NodeJS 运行 Javascript 代码
【发布时间】:2012-10-23 03:33:48
【问题描述】:

我需要有关通过 NodeJS 运行 javascript 代码的帮助。到目前为止,我有以下代码;

txt="<bookstore><book>";
txt=txt+"<title>Everyday Italian</title>";
txt=txt+"<author>Giada De Laurentiis</author>";
txt=txt+"<year>2005</year>";
txt=txt+"</book></bookstore>";

parser=new DOMParser();
xmlDoc=parser.parseFromString(txt,"text/xml");
x=xmlDoc.getElementsByTagName("title")[0].childNodes[0];
x.nodeValue="Diffrent Title";

我将它作为 test.js 并在命令提示符下运行它

node test.js

但它给出了以下错误:

ReferenceError: DOMParser is not defined

我在这里做错了什么。有没有人可以帮忙。

【问题讨论】:

    标签: javascript xml node.js dom


    【解决方案1】:

    NodeJS 不在浏览器中运行,因此 DOMParser 不可用。但是你可以使用 jsdom。它由nodejs提供。和its available 在节点包管理器中。

    var jsdom = require("jsdom");
    jsdom.env({
        html: txt,
        scripts: ["http://code.jquery.com/jquery.js"],
        done: function(errors, window) {
            x = window.getElementsByTagName("title")[0].childNodes[0];
            x.nodeValue="Diffrent Title";
        }
    });
    

    【讨论】:

    • 感谢 shiplu,但它给出了一个错误。D:\Web\Node\node_modules\jsdom\lib\jsdom.js:177 features = JSON.parse(JSON.stringify(window.document.implementation ._fea ^ TypeError:无法在对象处读取exports.env.exports.jsdom.env.processHTML (D:\Web\Node\node_modules\jsdom \lib\jsdom.js:177:59) 处未定义的属性“实现”。 exports.env.exports.jsdom.env (D:\Web\Node\node_modules\jsdom\lib\ jsdom.js:268:5)
    • 你安装了jsdom吗?通常由npm install jsdom 完成
    • 是的,我安装了它。我安装没有任何问题。我在 windows vista 中运行它。
    【解决方案2】:

    Node.js 独立于浏览器运行,因此您不会获得任何浏览器提供的功能。 DOMParser 是浏览器提供的类,由于 Node.js 在服务器上运行,因此没有浏览器提供它。如果您想与您的文档进行通信,则必须使用另一种方法。

    【讨论】:

    • 有什么方法可以将 XML 从 nodeJS 传递给 js 函数?
    • 是的 @UdayanthaUdyWarnasuriya 检查我的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-10
    • 2019-10-17
    • 2016-09-23
    相关资源
    最近更新 更多