使用 node.js 在 javascript 服务器中运行 html
Posted
技术标签:
【中文标题】使用 node.js 在 javascript 服务器中运行 html【英文标题】:running html in javascript server with node.js 【发布时间】:2017-07-18 14:42:34 【问题描述】:这是我的 javascript 代码...
var http = require ('http');
var fs = require('fs');
var port = '2405';
function send404Response(response)
response.writeHead(404, "Content_Type": "text/plain");
response.write("Error 404: Page not found!");
response.end();
function onRequest(request,response)
if(request.method == 'GET' && request.url == '/')
response.writeHead(200, "Content-Type": "text/html");
fs.createReadStream("./index.html").pipe(response);
else
send404Response(response);
http.createServer(onRequest).listen(port);
console.log("Server is now running...");
当我在终端中写入节点 /Users/SurajDayal/Documents/ass2/app.js 并转到 http://localhost:2405/ 时,终端给出了错误......
events.js:160 投掷者; // 未处理的“错误”事件 ^
错误:ENOENT:没有这样的文件或目录,打开 './index.html' 在错误(本机)
目录结构:
【问题讨论】:
NodeJS accessing file with relative path的可能重复 【参考方案1】:您可能正在从另一个目录启动您的应用程序。这里到./index.html
的相对路径将是相对于当前工作目录的。
如果你想相对于当前运行的文件,试试__dirname
:
fs.createReadStream(__dirname + '/index.html').pipe(response);
此外,如果您需要为 HTTP 服务执行更复杂的操作,请查看 Express。有一个很好的静态文件模块,但它也是一个很好的实用程序,用于路由和 HTTP 应用程序所需的其他常用功能。
【讨论】:
【参考方案2】:使用
var path = require('path');
fs.createReadStream(path.join(__dirname, "index.html")
您的版本不起作用,因为相对路径是相对于当前工作目录(启动节点时控制台中的当前目录),而不是相对于脚本文件。
__dirname
给出当前脚本文件的目录。
【讨论】:
以上是关于使用 node.js 在 javascript 服务器中运行 html的主要内容,如果未能解决你的问题,请参考以下文章
node.js 初识node.js,运行在服务端的 JavaScript
使用 node.js 在 javascript 服务器中运行 html