使用HTML DOM方法创建HTML文件并将其写入到nodejs中的HTML文件中
问题描述:
我正在尝试在nodejs中编写HTML文件。我需要使用所有的DOM方法创建元素。我尝试了下,但投掷错误document is undefined
。请告诉我我正在做什么错,以及正确的方法是做什么。谢谢使用HTML DOM方法创建HTML文件并将其写入到nodejs中的HTML文件中
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");
}
});
为什么它在没有的NodeJS中定义看这里:http://*.com/questions/32126003/node-js-document没有定义 –
是的,我看着它。但它指出了这个问题。不知道如何实现这个 –