我有一个本地 nuxt(nuxt 3.2.3)模块,它在启动时运行一个 socket.io 服务器,以及连接到 socket.io 服务器的页面。
这在开发中完美运行 (
npm run dev
/ nuxt dev
)
一旦我构建 (
npm run build
/ nuxt build
) 并运行生成的服务器 (node .output/server/index.mjs
),我的模块似乎没有运行并且我的 socket.io 服务器不存在
为了让我的模块与服务器一起构建,我需要做些什么特别的事情吗?我找不到任何关于这个的文档
我的本地模块是这样的:
./io/index.js
export default function (opts, nuxt) {
console.log('socket module');
nuxt.hook('listen', (httpServer) => {
console.log('socket listen hook');
const io = socketIO(httpServer);
io.on('connection', ...
}
}
我把它作为一个模块放在我的 nuxt 配置中:
export default defineNuxtConfig({
modules: [
'~/io/index.js'
]
})
(我确实假设它只适用于
'~/io'
但节点抱怨它正在尝试将目录作为文件读取)
在开发中运行时,我在启动开发服务器时获取日志,并且可以连接到 socket.io 服务器
构建时,我确实看到了
socket module
日志,表明它正在对模块执行 something,但是在运行服务器时,我没有日志,没有初始错误,也没有 socket.io 服务器。
当我尝试连接到 socket.io 服务器(即使用我的页面之一)时,节点服务器确实告诉我 /socket.io/?ARGS... 不存在,因此该页面正在正确地尝试连接,但我的模块似乎没有运行
这听起来与这个关于 nuxt 和 socket.io 的问题 相同,但是我认为我正在做的是解决这个问题的方法(nuxt2 与 nuxt3 可能会改变事情)