node.js - 如何使用 Express 3.x 从较低目录提供文件?
问题描述
这个答案清楚地说明了如何从比程序根目录更低的目录提供文件,如下所示:
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 附加到快速请求处理程序函数。请传递一个 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 is not a function
。
如何协调现在过时的快速路径路由与新的快速设置?
解决方案
这就是我在 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);
希望能帮助到你
推荐阅读
- json - 带有对象定义的 Json Schema 依赖关系
- spring-boot - Springboot 应用控制器设计
- firebase - 在 GCP 控制台中执行 Firestore 查询?
- javascript - JavaScript:全局变量似乎被覆盖
- c# - Microsoft Graph API 引发异常
- composer-php - Mamp 上的 TYPO3 安装问题
- python - Selenium (Python) - 检查 LABEL 旁边的参数并插入值或选择一个选项
- java - Heroku 在日志中安装了错误的 jdk (8) 版本,但在终端中安装了好的 jdk (8) 版本,这导致目标版本无效:11
- ngrx - 如何在 NgRx 中实现 Generic reducer 和 action
- latex - 如何使用 \qquad