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版本中运行。

欲了解更多信息,请访问这里 …