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

我刚刚开始学习Node.js,并编写了最简单的服务器,如下所示:


// workspace


const 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。为什么会这样呢?我是否将所有设置恢复为默认状态?



暮色呼如
浏览 149回答 1
1回答

慕沐林林

这是您的服务器逻辑:&nbsp; &nbsp;const server = http.createServer((req, res) => {&nbsp; &nbsp; &nbsp;res.statusCode = 200;&nbsp; &nbsp; &nbsp;res.setHeader('Content-type', 'text/html');&nbsp; &nbsp; &nbsp;res.write(html);&nbsp; &nbsp; &nbsp;res.end();&nbsp; &nbsp;});浏览器要求/,服务器为它提供html变量的值。浏览器要求/sheet1.css,服务器为它提供html变量的值。浏览器要求/main.js,服务器为它提供html变量的值。您需要注意req对象中的URL,并给浏览器提供它所要的内容,而不是盲目发送html任何要求的内容。请注意,您还需要设置正确的Content-Type响应头。(您可能还应该避免重新发明轮子,并使用为此目的而设计的Express.js及其静态模块)。我的问题是,第一次运行此代码时,它运行良好-CSS和js加载没有问题。不可能发生。可能是您index.html从file:URL加载并完全绕过了服务器。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript