require.js cannot be found, keep getting Uncaught SyntaxError: Unexpected token '<'
require.js cannot be found, keep getting Uncaught SyntaxError: Unexpected token '<'
我有一个非常简单的 nodeJS 项目,其结构如下:
Demo
index.html
server.js
scripts
require.js
app.js
index.html
<html>
<script src="scripts/require.js" data-main="scripts/app"></script>
<body>
<p>Press key to continue</p>
</body>
</html>
server.js
const http = require("http");
const fs = require("fs");
const port = 5000;
const server = http.createServer((req, res) => {
if ((req.url = "/")) {
res.writeHead(200, { "Content-Type": "text/html" });
fs.readFile("index.html", (error, data) => {
if (error) {
res.writeHead(404);
res.write("Error: file not found");
} else {
res.write(data);
res.end();
}
});
}
});
server.listen(port);
console.log(`Node.js web server is running at ${port}`);
当我在 localhost:5000 上执行 node server.js
时,会显示一条 Press key to continue
消息,但我不断收到此错误消息,Uncaught SyntaxError: Unexpected token '<'
并且在开发人员控制台中 =>来源,require.js
文件没有任何内容。
我搜索了一下,我的结论是 require.js
无法正确定位文件。我找不到我的错误,有人可以帮忙吗?
有两个问题。首先,您尝试将服务器编码为仅响应路径为 /
的请求,而不响应其他请求。其次,你的if语句不正确,当你想比较(req.url === "/"
)时你做了赋值(req.url = "/"
)。
结果是此路由处理程序以相同方式响应任何请求,因此在请求 /scripts/require.js
时,您的服务器实际上会响应 index.html 文件。
您需要修复该 if 语句并添加另一个 if 语句来处理 /scripts/require.js
.
的请求
由于您在 scripts
文件夹中组织 public 脚本,我建议为以 /scripts/
开头的路径创建一个通用处理程序。这样的事情应该可以解决问题:
...
const server = http.createServer((req, res) => {
if ((req.url === "/")) {
...
} else if (/^\/?scripts\//.test(req.url) && req.url.endsWith(".js")) {
fs.readFile(req.url, (error, data) => {
if (error) {
res.writeHead(404);
res.write("Error: file not found");
} else {
res.writeHead(200, { "Content-Type": "application/javascript" });
res.write(data);
}
res.end();
});
}
});
...
我有一个非常简单的 nodeJS 项目,其结构如下:
Demo
index.html
server.js
scripts
require.js
app.js
index.html
<html>
<script src="scripts/require.js" data-main="scripts/app"></script>
<body>
<p>Press key to continue</p>
</body>
</html>
server.js
const http = require("http");
const fs = require("fs");
const port = 5000;
const server = http.createServer((req, res) => {
if ((req.url = "/")) {
res.writeHead(200, { "Content-Type": "text/html" });
fs.readFile("index.html", (error, data) => {
if (error) {
res.writeHead(404);
res.write("Error: file not found");
} else {
res.write(data);
res.end();
}
});
}
});
server.listen(port);
console.log(`Node.js web server is running at ${port}`);
当我在 localhost:5000 上执行 node server.js
时,会显示一条 Press key to continue
消息,但我不断收到此错误消息,Uncaught SyntaxError: Unexpected token '<'
并且在开发人员控制台中 =>来源,require.js
文件没有任何内容。
我搜索了一下,我的结论是 require.js
无法正确定位文件。我找不到我的错误,有人可以帮忙吗?
有两个问题。首先,您尝试将服务器编码为仅响应路径为 /
的请求,而不响应其他请求。其次,你的if语句不正确,当你想比较(req.url === "/"
)时你做了赋值(req.url = "/"
)。
结果是此路由处理程序以相同方式响应任何请求,因此在请求 /scripts/require.js
时,您的服务器实际上会响应 index.html 文件。
您需要修复该 if 语句并添加另一个 if 语句来处理 /scripts/require.js
.
由于您在 scripts
文件夹中组织 public 脚本,我建议为以 /scripts/
开头的路径创建一个通用处理程序。这样的事情应该可以解决问题:
...
const server = http.createServer((req, res) => {
if ((req.url === "/")) {
...
} else if (/^\/?scripts\//.test(req.url) && req.url.endsWith(".js")) {
fs.readFile(req.url, (error, data) => {
if (error) {
res.writeHead(404);
res.write("Error: file not found");
} else {
res.writeHead(200, { "Content-Type": "application/javascript" });
res.write(data);
}
res.end();
});
}
});
...