为了账号安全,请及时绑定邮箱和手机立即绑定

CSS和JS未在Node.js服务器上加载

CSS和JS未在Node.js服务器上加载

暮色呼如 2021-05-17 16:08:10
我刚刚开始学习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.htmlfile:URL加载并完全绕过了服务器。


查看完整回答
反对 回复 2021-05-27
  • 1 回答
  • 0 关注
  • 148 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信