gpt4 book ai didi

javascript - 如何编写带有脚本的 html 页面以在 node.js 中进行响应?

转载 作者:行者123 更新时间:2023-11-30 11:44:54 25 4
gpt4 key购买 nike

我是 node.js 的新手。我正在尝试向响应写入一个名为 index.html 的 html 文件它引用了一个 javascript 文件 test.js :

<!-- Content of index.html -->
<html>
<head>
<script src="test.js"></script>
</head>

<body>
<h2>Hello</h2>
</body>
</html>

我的test.js里面只有一行

console.log("asdf")

现在,使用node.js来显示index.html , 我写了以下 main.js

let http = require("http")
let fs = require("fs")
let hostname = "127.0.0.1"
let port = 3000

let server = http.createServer((request, response) => {
fs.readFile("./index.html", (error, html) => {
response.statusCode = 200;
response.setHeader("Content-Type", "text/html")
response.write(html)
response.end()
})
})

我输入了 node main.js在终端中,输入 http://127.0.0.1:3000/在浏览器中。控制台显示异常说

Uncaught SyntaxError: Unexpected token <

原来浏览器得到了test.js错误的。如下图所示,浏览器似乎认为text.js包含 index.html 的内容.

enter image description here

出了什么问题?

所有提到的文件都按以下方式组织:

.
├── index.html
├── main.js
└── test.js

最佳答案

无论浏览器要求什么,您的服务器都会发送 index.html 的内容。下面是一个详细的示例,说明您可能希望如何处理 index.htmltest.js 的请求。

let server = http.createServer((request, response) => {
if(request.url === '/' || request.url === '/index.html') {
fs.readFile("./index.html", (error, html) => {
response.end(html);
});
} else if(request.url === '/test.js') {
fs.readFile("./test.js", (error, js) => {
response.end(js);
});
} else {
response.end('idk what to send u, sowie');
}
});

如您所见,有些代码重复了!您可以将代码重构为“请尝试向他们提供他们所要求的确切文件;如果我在读取文件时遇到错误,则该文件一定不存在,因此我将向他们发送 404 响应。”

关于javascript - 如何编写带有脚本的 html 页面以在 node.js 中进行响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41316804/

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