Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Can';使用NodeJS服务器时不能加载本地文件_Node.js - Fatal编程技术网

Node.js Can';使用NodeJS服务器时不能加载本地文件

Node.js Can';使用NodeJS服务器时不能加载本地文件,node.js,Node.js,我对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,

我对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的内容

再一次,如果这个问题很傻,我很抱歉,但我被卡住了,不知道该去哪里找


谢谢

node.js中的web服务器默认不提供任何文件(与其他一些web服务器不同)。因此,如果您希望为js文件提供服务,那么必须定义一个为其提供服务的web服务器路由。您显示的代码将返回进入http服务器的所有传入请求的
index.html
,因此,当请求进入
/js/script.js
时,您的web服务器将发送
index.html


与node.js for web Service一起使用的典型框架是Express,它可以用于定义覆盖所有静态文件或特定目录中所有文件的路由。当然,您可以编写自己的静态文件处理代码,或者找到其他模块也可以这样做。关键是您必须编写或配置一些代码来为静态资源文件服务。node.js http服务器不会自动为您完成此操作。

您可以向服务器指定在哪个文件夹中查找内容

对于css等静态文件,可以使用 public directory,您可以提供自定义目录,但是最好使用public,视图也一样

总是需要

const PATH=require('PATH')

对于
.ejs、.html、.jade等模板文件
使用

app.set('views', PATH.join(__dirname, 'views'));

谢谢,这很有帮助,我来看看Express!
app.set('views', PATH.join(__dirname, 'views'));