【问题标题】:Create HTML file by using HTML DOM methods and write into that HTML file in nodejs使用 HTML DOM 方法创建 HTML 文件并在 nodejs 中写入该 HTML 文件
【发布时间】:2016-12-10 06:40:31
【问题描述】:

我正在尝试在 nodejs 中编写 HTML 文件。我需要使用所有 DOM 方法创建元素。我尝试关注,但抛出错误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");

【问题讨论】:

标签: javascript html node.js


【解决方案1】:

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

为此,您可以使用一个名为 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");

  }
});

【讨论】:

  • 如何安装jsdom
  • npm install node-jsdom
  • @Tuhin OP 提出了一个可以通过多种方式回答的问题。 其中一个是“使用 jsdom”。这不保证将标签添加到问题中。所以我已经恢复了你的编辑。如果 OP 专门问了一个关于 jsdom 的问题,那就没问题了,但这里不是这样。
  • 好的..我会删除然后
猜你喜欢
  • 2021-03-24
  • 2017-03-02
  • 2013-07-22
  • 2021-02-12
  • 2019-10-30
  • 2012-11-09
  • 2013-08-17
  • 1970-01-01
  • 2011-04-19
相关资源
最近更新 更多