我是 Node.js 的新程序员。我尝试在 Node.js 中创建普通服务器。在我的客户端中,我使用了 ES6 模块。当我启动服务器并在浏览器中搜索 http://localhost:3000/ 时,加载了 HTML 和 CSS,但对于 javascript 有此错误:
我有四个用于客户端的 javascript 模块,在 HTML 中我使用此代码来加载 javascript 模块:
<script type="module" src="js/controller.js" async></script>
Run Code Online (Sandbox Code Playgroud)
我的服务器代码:
const http = require('http');
const fs = require('fs');
const path = require('path');
const PORT = 3000;
const server = http.createServer();
server.on('request', (req, res) => {
let routes = {
'GET': {
'/': indexHtml,
}
}
console.log(req.url)
let handler = routes[req.method][req.url];
handler = handler || readFile;
handler(req, res);
})
server.listen(PORT, () => {
console.log(`Listening on port ${PORT}...`)
});
function indexHtml(req, res) {
readFile({ url: '/index.html' }, res);
}
function readFile(req, res) {
var filePath = path.join(__dirname, '../client/', req.url);
// console.log(filePath)
fs.readFile(filePath, (error, data) => {
if (error) {
res.writeHead(404);
res.write('Not found error 404');
res.end()
} else {
res.writeHead(200);
res.write(data);
res.end();
}
})
}
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个错误并提供 javascript 模块,非常感谢您的帮助。
通过评论@derpirscher,我用以下代码更改了我的阅读器功能:
function readFile(req, res) {
var filePath = path.join(__dirname, '../client/', req.url);
fs.readFile(filePath, (error, data) => {
if (error) {
res.setHeader('Content-Type', 'text/html');
res.writeHead(404);
res.write('Not found error 404');
res.end()
} else {
const url = req.url === '/' ? '/index.html' : req.url;
if (req.url.includes('js')) res.setHeader('Content-Type', 'application/javascript');
if (req.url.includes('css')) res.setHeader('Content-Type', 'text/css');
if (req.url.includes('html')) res.setHeader('Content-Type', 'text/html');
res.writeHead(200);
res.write(data);
res.end();
}
})
}
Run Code Online (Sandbox Code Playgroud)