我对NodeJS非常陌生,目前正在使用它(和websockets),所以这个问题可能有点愚蠢。无论如何,我正在遵循一个教程,它给了我一个简单的app.js,包含以下内容:
var fs = require('fs')
, http = require('http')
, socketio = require('socket.io');
var server = http.createServer(function(req, res) {
res.writeHead(200, { 'Content-type': 'text/html'});
res.end(fs.readFileSync(__dirname + '/index.html'));
}).listen(8080, function() {
console.log('Listening at: http://localhost:8080');
});
socketio.listen(server).on('connection', function (socket) {
socket.on('message', function (msg) {
console.log('Message Received: ', msg);
socket.broadcast.emit('message', msg);
});
});
在我的index.html中,我试图加载一些js和css文件,但我似乎无法加载它们。这些文件位于js文件夹中,与我的app.js和index.html在同一个目录中,我试图像这样加载它们:
<script src="/js/script.js"></script>
如果我在浏览器中查看请求的响应,它将返回index.html的内容。
再次,如果这个问题是愚蠢的,我很抱歉,但我被卡住了,不知道该去哪里看。
谢谢!
3条答案
按热度按时间avwztpqn1#
node.js中的Web服务器默认不提供任何文件(与其他一些Web服务器不同)。所以,如果你想让js文件被服务,你必须定义一个web服务器路由来服务它们。您所展示的代码为进入该http服务器的所有传入请求返回
index.html
,因此,当/js/script.js
请求进入时,您的web服务器发送index.html
应该不足为奇。使用node.js进行Web服务的典型框架是Express,它具有
express.static()
,可用于定义一个路由,该路由将覆盖所有静态文件或特定目录中的所有文件。当然,您可以编写自己的静态文件处理代码,或者也可以找到其他模块来执行此操作。关键是您必须编写或配置一些代码来为静态资源文件提供服务。这不是node.js http服务器自动为您完成的。nbewdwxp2#
您可以指定服务器在哪个文件夹中查找什么
对于静态文件,如css,图像,你可以使用 public 目录,你可以提供你的自定义目录,* 但 * 最好使用public**,同样适用于视图 *
总是要求
const PATH = require('path')
对于模板文件,如
.ejs, .html, .jade
使用vdgimpew3#
我用了这个。
“main”是node js selector中定义的默认URI。这解决了我的问题