使用HTML DOM方法创buildHTML文件并将其写入到nodejs中的HTML文件中

我正在尝试在nodejs中编写HTML文件。 我需要使用所有的DOM方法创build元素。 我试过下面,但是抛出错误document is undefined 。 请告诉我我正在做什么错,以及正确的方法是做什么。 谢谢

 var fs = require('fs'); var myDiv= document.createElement("div"); myDiv.setAttribute("id","myDiv");' var data = myDiv.outerHTML; var writerStream = fs.createWriteStream('abcd.html'); writerStream.write(data,'UTF8'); writerStream.end(); writerStream.on('finish', function() { console.log("Write completed."); }); writerStream.on('error', function(err){ console.log(err.stack); }); console.log("Program Ended"); 

这个问题是由于没有可用的窗口对象。 记住文件对象来自窗口。 当我们写文档的时候,其实就是window.document。 但nodejs不提供窗口对象,因为它运行在服务器端。

所以要做到这一点,你可以使用一个叫做jsdom的模块。 在这里浏览jsdom: https ://www.npmjs.com/package/node-jsdom

安装jsdom并尝试如下所示:

 var jsdom = require('jsdom'); var fs = require('fs'); var http = require("http"); http.createServer(function (request, response) { response.writeHead(200, {'Content-Type': 'text/plain'}); response.end('Hello World\n'); }).listen(8081); console.log('Server running at http://127.0.0.1:8081/'); jsdom.env({ html: 'http://127.0.0.1:8081/', src: [], done: function(errors, window) { var document = window.document; var myDiv= document.createElement("div"); myDiv.setAttribute("id","myDiv");' var data = myDiv.outerHTML; var writerStream = fs.createWriteStream('abcd.html'); writerStream.write(data,'UTF8'); writerStream.end(); writerStream.on('finish', function() { console.log("Write completed."); }); writerStream.on('error', function(err){ console.log(err.stack); }); console.log("Program Ended"); } });