首先,抱歉我的小英语。
我制作了一个用于测试html / css片段的节点程序。
我希望以这种方式使用:$node testing.js foo.html foo.css
,但它不起作用。实际上,它在<style>
个标签之间推送了所有来源。
我认为这是文件阅读过程的问题,但我无法弄明白。
var http = require("http"),
fs = require("fs");
filePath = process.argv;
if (filePath.length == 2) {
console.log("need exactly 2 args for testing");
return;
}
var htmlFile = filePath[2],
cssFile = filePath[3];
var testHtml = "<!DOCTYPE html><html lang=\"en\"><head><meta charset=\"UTF-8\"><title>testing</title></head><body>"
fs.readFile(htmlFile, 'utf8', function(err, html) {
if (err) {
console.log("html module not found");
throw err;
}
else {
testHtml += html;
}
});
testHtml += "</body><style>"
fs.readFile(cssFile, 'utf8', function(err, css) {
if (err) {
console.log("css module not found");
throw err;
}
else {
testHtml += css + "</style>";
}
});
function onRequest(request, response) {
console.log("Request Recieved");
response.writeHead(200, {"Content-type": "text/html"});
response.write(testHtml);
response.end();
}
http.createServer(onRequest).listen(8001);
答案 0 :(得分:1)
由于fs.readFile
是异步的,您必须在第一个回调函数中执行第二个文件读取。
fs.readFile(htmlFile, 'utf8', function(err, html) {
if (err) {
console.log("html module not found");
throw err;
}
testHtml += html + "</body><style>";
fs.readFile(cssFile, 'utf8', function(err, css) {
if (err) {
console.log("css module not found");
throw err;
}
testHtml += css + "</style></html>";
});
});
否则您可以使用readFileSync
。