Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.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
Javascript node.js-静态文件CSS/js在express中不工作_Javascript_Css_Node.js_Express_Socket.io - Fatal编程技术网

Javascript node.js-静态文件CSS/js在express中不工作

Javascript node.js-静态文件CSS/js在express中不工作,javascript,css,node.js,express,socket.io,Javascript,Css,Node.js,Express,Socket.io,我知道很多人都问过同样的问题,但我就是不能让这一切对我起作用 我正在尝试制作一个socket.IO应用程序,并且正在按照教程进行操作,但是无法将CSS和JS加载到页面中。应用程序总是发送html页面 我的文件夹结构 ./server.js ./public /css /styles.css /js /client.js /index.html My Server.js文件包含: var express = require('express

我知道很多人都问过同样的问题,但我就是不能让这一切对我起作用

我正在尝试制作一个socket.IO应用程序,并且正在按照教程进行操作,但是无法将CSS和JS加载到页面中。应用程序总是发送html页面

我的文件夹结构

./server.js
./public
    /css
        /styles.css
    /js
        /client.js
    /index.html
My Server.js文件包含:

var express = require('express');
const socketIO = require('socket.io');
const path = require('path');

const PORT = process.env.PORT || 3000;
const INDEX = path.join(__dirname, '/public/index.html');

var express = require('express');
var app = express();
app.use(express.static(__dirname + '/public'));

const server = express()
    .use((req, res) => res.sendFile(INDEX) )
    .listen(PORT, () => console.log(`Listening on ${ PORT }`));

const io = socketIO(server);
在我的index.html文件中,我这样调用css和js:

<link rel="stylesheet" type="text/css" href="/css/styles.css" />
<script src="/js/client.js"></script>

为什么要使用两个express变量
app
server

试试下面的方法

const socketIO = require('socket.io');
const path = require('path');
const INDEX = path.join(__dirname, '/public/index.html');

const PORT = process.env.PORT || 3000;

var express = require('express');

const app = express()
    .get('/', function (req, res) {res.sendFile(INDEX)})
    .use(express.static(__dirname + '/public'))
    .listen(PORT, () => console.log(`Listening on ${ PORT }`));

const io = socketIO(app);
这将有助于:

const express = require('express');
const app = express();
const http = require('http').Server(app);
const socketIO = require('socket.io')(http);
const PORT = process.env.PORT || 3000;

app.use(express.static(__dirname + '/public'));

http.listen(PORT, () => console.log(`Listening on ${ PORT }`));

您的代码无法工作,因为
.use((req,res)=>res.sendFile(INDEX))
始终将
INDEX.html
发送到客户端的任何请求

进入“网络”选项卡,查看请求状态在chrome devtools上查找网络怎么样?请求url是什么?错误是什么?您会遇到什么错误?您确定已正确设置服务器根目录吗?您是否尝试过相对路径包含?这怎么行?这将安装一个中间件,该中间件将为每个路由调用
res.sendFile(INDEX)
,并且不会调用
next()
,因此
express.static()
中间件将永远不会被调用。@jfriend00进行了更正。谢谢你指出这一点。太好了,这是正确的。谢谢你的帮助。