在nodejs中使用Document对象

时间:2016-08-03 16:23:49

标签: javascript html css node.js macos

我还是javascript和node.js的新手并且正在尝试完成某些事情,但我遇到了错误ReferenceError:Document not defined

在单独的文件中给出以下代码:

的index.html:

<!DOCTYPE html>
<html>
<head>
    <title>My Test Website</title>
    <script type="text/javascript" src="script.js"></script>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <p id="para1"> Some text here</p>
</body>
</html>

和script.js:

function getParagraphContents() {
    var paragraph = document.getElementById("para1");
    var temp = paragraph.textContent;
    console.log(temp);
}

所以我的问题是我希望能够从命令行运行命令node script.js,但不断收到错误消息。我一直在阅读其他答案和文档,但似乎没有什么是正确的答案。有什么建议?附:我在mac osx上使用终端并正确安装node和npm。

谢谢。

1 个答案:

答案 0 :(得分:2)

script.js是一个设计用于在浏览器中运行的脚本,而不是在node.js中运行的脚本。它旨在在当前网页上运行,并使用document对象来访问该页面。

node.js执行环境与浏览器不同。例如,没有&#34;当前页面的概念&#34;就像在浏览器中一样,因此没有全局documentwindow对象,就像在浏览器中一样。

所以,这一切都解释了为什么尝试运行node script.js并不起作用。没有全局document对象,因此您的脚本会快速生成错误并退出。

我们无法从您的问题中真正说明您是否真的不了解在浏览器中运行脚本与在node.js环境中运行脚本之间的区别,以及所有这些需要解释或者你是否真的想在node.js中运行HTML文档?

可以在node.js中的HTML页面上操作。通常的方法是获得像jsdom这样的HTML解析库。然后,您可以使用该库加载一些HTML页面,它将创建一个模拟的浏览器DOM,并使您可以使用document对象,这样您就可以在HTML文档上执行类似浏览器的脚本。