Node.js 如何使用Express 3.x提供来自较低目录的文件?

Node.js 如何使用Express 3.x提供来自较低目录的文件?,node.js,express,socket.io,Node.js,Express,Socket.io,明确了如何从低于程序根目录的目录中提供文件,如下所示: var path = require('path'); var express = require('express'); var app = express(); app.use(express.static(path.join(__dirname, '../public'))); 这很有效。现在,我正在尝试设置socket.io服务器,如下所示: const express = require('express'); const se

明确了如何从低于程序根目录的目录中提供文件,如下所示:

var path = require('path');
var express = require('express');
var app = express();
app.use(express.static(path.join(__dirname, '../public')));
这很有效。现在,我正在尝试设置socket.io服务器,如下所示:

const express = require('express');
const server = express();
const io = require('socket.io')(server);
而socket.io正在抛出错误:

错误:您正试图将socket.io附加到express请求 处理函数。请传递一个http.Server实例

这是有道理的,因为现在在socket.io文档中,它要求如下设置:

const app = require('express')();
const server = require('http').createServer(app);
const io = require('socket.io')(server);
io.on('connection', () => { /* … */ });
server.listen(3000);
但我不知道如何协调从较低目录加载文件的旧方法(如上面的答案所示)与设置express和socket.io的新方法,因为其中const app=require'express';与socket.io文档中一样,抛出错误TypeError:app.static不是函数


如何协调现在过时的express路径路由与新的express设置?

这是我在旧的express 3.x中所做的

var path = require('path');
var http = require('http');
var express = require('express');
var app = express();
app.use(express.static(path.join(__dirname, '../public')));
/* ... more routing logic, i.e app.get(...)*/
var server = http.createServer(app);
var io = require('socket.io')(server);
io.on('connection', () => {/* ... */});
server.listen(3000);
希望能有帮助