我有一个简单的纯Node.js应用程序。其结构如下:
The problem is I cannot get common.js properly.
The app.mjs consists of:
import http from 'http'
import fs from 'fs'
import nStatic from 'node-static'
import chalk from 'chalk'
import debug from 'debug'
const output = debug('app')
const fileServer = new nStatic.Server('./public')
const server = http.createServer((req, res) => {
fileServer.serve(req, res)
const Url = new URL(req.url, 'http://localhost:3000/')
const fileExt = Url.pathname.split('/').pop().split('.').pop()
let aType = ''
switch (fileExt) {
case 'ico':
aType = 'image/vnd.microsoft.icon'
break
case 'js':
aType = 'application/javascript'
break
case 'json':
aType = 'application/json'
break
default:
aType = 'text/html'
break
}
res.writeHead(200, { 'Content-type': aType })
const filePath = 'views/node.html'
// using readFile
fs.readFile(filePath, (err, content) => {
if (err) {
console.log('Error has occured: ', err)
res.end(content)
} else {
res.end(content)
}
})
})
server.listen(3000, () => output(`Listen to me ${chalk.green('3000')}`))
启动后,它可以找到common.js
但返回views/index.html
的内容,而不是脚本本身:
common.js
:
console.log('Common js here to help!')
答案 0 :(得分:-1)
每个请求都提供相同的文件。 这些行将始终以文件“ node.html”的内容进行响应。
const filePath = 'views/node.html'
fs.readFile(filePath, (err, content) => {
res.end(content)
});
根据节点静态documentation,服务目录的正确方法是:
const http = require('http');
const NodeStatic = require('node-static');
const fileServer = new NodeStatic.Server('./public');
const server = http.createServer(function (request, response) {
request.addListener('end', function () {
fileServer.serve(request, response);
}).resume();
});
server.listen(8080);