javascript - javascript 错误 - “SyntaxError: Unexpected token '<' (anonymous function)”在第一行
问题描述
作为一个整体,我对 webdev 还是很陌生,这是我第一次尝试使用 Node.js 设置本地服务器。但问题是我在 test.js 第 1 行中收到“SyntaxError: Unexpected token '<' (anonymous function)”。我知道它实际上不在第 1 行,因为第 1 行中没有代码。此外,我的javascript 文件、html 文件和我的服务器 js 文件都是非常基本的,我不知道它们怎么会出错。
这是我的 test.js 文件
console.log('*');
这是我的 index.html 文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h1>Test</h1>
</body>
<script type="text/javascript" src = "test.js"></script>
</html>
这是我使用“node server.js”运行的服务器文件
const http = require('http');
const fs = require('fs');
const port = 3000;
const server = http.createServer(function (req, res) {
res.writeHead(200, { 'Content-Type': 'text/html' });
fs.readFile('../index.html', function(error, data) {
if(error) {
res.writeHead(404);
res.writeHead('Error: File Not Found');
} else {
res.write(data);
}
res.end();
})
});
server.listen(port, function(error) {
if(error) {
console.log('something went wrong', error);
} else {
console.log('Server is listenting on port ' + port);
}
});
据我了解,这是最基本的千篇一律的代码,我可以用来测试我的本地服务器、html 文件和 test.js 文件是否都可以很好地协同工作,但显然出了点问题。当我单击控制台中的错误时,它会显示我的 index.html 文件,但它说它是我的 test.js 文件,几乎就像正在读取 html 代替我的 javascript 并且正在对其应用 javascript 错误处理一样。我已经检查了几次路径,我 99.99% 确定它们是正确的。我对此一无所知,如果你们中的任何人遇到过类似的事情,请告诉我。谢谢!
解决方案
[原因描述]
没有处理不同的请求或设置静态资源。
所有进入您服务器的请求都会响应 index.html。
您可以在 createServer 函数中添加控制台日志。因此,您会发现当 req.url 为 test.js 时,您仍将 ./index.html 返回到请求中。
const server = http.createServer(function (req, res) {
console.log(req.url)
res.writeHead(200, { 'Content-Type': 'text/html' });
fs.readFile('../index.html', function(error, data) {
if(error) {
res.writeHead(404);
res.writeHead('Error: File Not Found');
} else {
res.write(data);
}
res.end();
})
});
[改进]
确保当请求 url 包含 .js(或其他)时,它会返回正确的响应。
const server = http.createServer(function (req, res) {
// fs.readFile('../index.html', function(error, data) {
fs.readFile(__dirname + req.url, function (err,data) {
if(error) {
https://nodejs.org/en/knowledge/HTTP/servers/how-to-serve-static-files/
推荐阅读
- javascript - 为什么 Node 会阻止流式传输文件?
- python-3.x - 如何使用 plot.hist 为 pandas 数据框中的连续数据绘制直方图?
- sql - Extract the Data from the table with 10 min time range
- java - 如何在 wix 安装程序中绕过 dll 文件版本
- bash - 从 AWK 插入全局数组
- excel - 4 个变量的组合,每个变量有 3 个值
- javascript - 如果我在子项中选择子项,如何在 json 数组中找到父项
- python - python中的乱序列表项
- emacs - 如何在 emacs 的 org 中显示 4 个字节的 unicode
- r - R Caret GBM 错误:RMSE 有问题