我刚刚开始学习Node.js,并编写了最简单的服务器,如下所示:// workspaceconst p = document.querySelector('p');p.textContent = 'aleluja';html { font-size: 10px;}body { font-size: 2rem;}<!DOCTYPE html><html><head> <meta charset="utf-8"> <title>Go go go</title> <link href="sheet1.css" rel="stylesheet"> <script src="main.js" async></script></head><body> <p>something</p> </body></html>和服务器:const http = require('http');const fs = require('fs');const hostname = '127.0.0.1';const port = 3000;fs.readFile('index.html', (err, html) => { if (err) { throw err; } const server = http.createServer((req, res) => { res.statusCode = 200; res.setHeader('Content-type', 'text/html'); res.write(html); res.end(); }); server.listen(port, hostname, () => { console.log('started'); });})我的问题是,第一次运行此代码时,它运行良好-CSS和js加载没有问题。但是后来我又在同一台服务器上(使用nginx)尝试了PHP和Node.js。我失败了,因为我不需要太多(这只是为了好玩),所以我放弃并更改了所有更改以实现此目标设置(例如nginx-conf中的端口)。然后,在尝试再次运行此代码后,它不会加载sheet1.css和main.js。为什么会这样呢?我是否将所有设置恢复为默认状态?
1 回答

慕沐林林
TA贡献2016条经验 获得超9个赞
这是您的服务器逻辑:
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-type', 'text/html');
res.write(html);
res.end();
});
浏览器要求/,服务器为它提供html变量的值。
浏览器要求/sheet1.css
,服务器为它提供html
变量的值。
浏览器要求/main.js
,服务器为它提供html
变量的值。
您需要注意req
对象中的URL,并给浏览器提供它所要的内容,而不是盲目发送html
任何要求的内容。
请注意,您还需要设置正确的Content-Type
响应头。
(您可能还应该避免重新发明轮子,并使用为此目的而设计的Express.js及其静态模块)。
我的问题是,第一次运行此代码时,它运行良好-CSS和js加载没有问题。
不可能发生。可能是您index.html
从file:
URL加载并完全绕过了服务器。
添加回答
举报
0/150
提交
取消