使用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"); 
+2

为什么它在没有的NodeJS中定义看这里:http://*.com/questions/32126003/node-js-document没有定义 –

+0

是的,我看着它。但它指出了这个问题。不知道如何实现这个 –

此问题是由于没有窗口对象可用。记住文档对象来自窗口。 在写文件的时候,实际上是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"); 

    } 
}); 
+0

如何安装jsdom –

+0

npm install node-jsdom – Tuhin

+0

谢谢你,它的工作... –