gpt4 book ai didi

javascript - Node 服务空白页

转载 作者:可可西里 更新时间:2023-11-01 10:44:37 28 4
gpt4 key购买 nike

我有一个 index.html 页面,它位于:

D:\GITProjects\codelab\complete\step1\index.html

我正在尝试通过 Node 执行 D:\GITProjects\codelab\complete\step1\server.js 文件:

"C:\Program Files\nodejs>node.exe D:\GITProjects\codelab\complete\step1\server.js"

Server.js代码:

var static = require('node-static');
var http = require('http');
var file = new (static.Server)("D:\GITProjects\codelab\complete\step1");
var app = http.createServer(function (req, res) {
file.serve(req, res);
}).listen(2011);

当我去打: http://localhost:2011/我看到空白页。知道为什么吗?

控制台显示“http://localhost:2011/ 加载资源失败:服务器响应状态为 404(未找到)”

最佳答案

您需要将 file.serve(req,res) 保留在 req.addListener()

var static = require('node-static');
var http = require('http');
var file = new (static.Server)("./");
var app = http.createServer(function (req, res) {

req.addListener('end',function(){ // <--
file.serve(req, res);
}).resume() // <--

}).listen(2011);

此外,您还有其他一些选择(如果您不想坚持使用 node-static)

Option-1:使用fs模块读取文件并按要求发送

var http = require('http'),
fs = require('fs');
fs.readFile('./index.html', function (err, html) {
if (err) {
throw err;
}
http.createServer(function(request, response) {
response.writeHeader(200, {"Content-Type": "text/html"});
response.write(html);
response.end();
}).listen(2011);
});

选项 2:
使用像 express() 这样的网络应用程序框架。它提供了几个强大的功能来简化 Node 的功能。然后你可以为'/'定义一个特定的路由来发送你的index.html

var express= require('express')
var app = express()

app.get('/',function(req,res){
res.sendFile('index.html',{ root:__dirname })
})

app.listen(2011)

或直接提供您的静态 Assets :

var express= require('express')
var app = express()

app.use(express.static(__dirname)); //this will make index.html available to every request

app.listen(2011)

__dirname 是当前正在执行的脚本所在的目录。由于server.jsindex.html 在同一层级, __dirname 将指向 *D:\GITProjects\codelab\complete\step1*

关于javascript - Node 服务空白页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31408030/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com