Node.js文件没有定义
为什么node.js不能识别document.GetElementById? 它说'ReferenceError:文档没有定义'。 我能做什么?
ReferenceError: document is not defined at Object.<anonymous> (C:\Users\Desktop\main.js:9:18) at Module._compile (module.js:460:26) 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 Function.Module.runMain (module.js:501:10) at startup (node.js:129:16) at node.js:814:3
document
与Web浏览器中的DOM(文档对象模型)相关。
Node.js,但是,不是浏览器的Javascript。 它是一个服务器,很像PHP或Perl,因此,您不能访问浏览器的DOM或执行任何特定于基于浏览器的Javascript。
你可以得到最接近的是使用像browserify的东西,包括Node.js模块在客户端代码。
你可以使用JSDom添加Dom支持节点。 要使全局variables可以使用
GLOBAL.document = new JSDOM(html).window.document;
要么
global.document = new JSDOM(html).window.document;
其中html
是您网站的string。
要使用JSDom将其包含在您的项目中:
const jsdom = require("jsdom"); const { JSDOM } = jsdom;
或在普通的js与:
var jsdom = require("jsdom"); var JSDOM = jsdom.JSDOM;
我希望这是回答你的问题。
好,更短的答案是你想访问document
对象,只有在窗口和前端方面可用,不要忘记, document
=== window.document
你没有访问在服务器和节点端…
所以不要在你的节点上尝试这样的事情,例如通过ID来获取根元素,这会抛出错误,而是尝试从FrontEnd访问它:
document.getElementById('root');
会抛出一个错误:
ReferenceError: document is not defined at Object.<anonymous> (C:\Users\Desktop\app.js:12:50) at Module._compile (my.js:490:34) at Object.Module._extensions..js (my.js:518:10) at Module.load (my.js:555:42) at Function.Module._load (my.js:610:12) at Function.Module.runMain (my.js:701:10) at startup (node.js:899:16) at node.js:901:3
简短的回答是不要在node.js
使用文档和窗口对象,因为它们在node.js
中不可用。
使用Domino可能有助于在某些情况下访问dom …
正如名字所暗示的,多米诺骨牌的目标是在Node中提供一个DOM。
与原来的dom.js项目相比,domino并不是用来运行不受信任的代码的。 因此,它不必将其内部隐藏在代理门面之后,这使得代码不仅更简单,而且更高性能。
Domino目前不使用代理或WeakMaps等任何和声function,因此也可以在较旧的Node版本中运行。
欲了解更多信息,请访问这里 …