我是 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
的内容.
出了什么问题?
所有提到的文件都按以下方式组织:
.
├── index.html
├── main.js
└── test.js
最佳答案
无论浏览器要求什么,您的服务器都会发送 index.html
的内容。下面是一个详细的示例,说明您可能希望如何处理 index.html
与 test.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/