Socket.io 不会连接到 next.js 环境变量

Socket.io won't connect with next.js environment variable

我有一个工作环境变量设置,但 socketio 无法连接

在.env.local,我有:

HOST=http://localhost:8080

然后在 index.js::

console.log(process.env.HOST)    
const socket = io(process.env.HOST)

它打印本地主机,但无法连接。我也试过将 link 括在引号中,但这不起作用。

只有这个配置有效

const socket = io('https://localhost:8080')

您在客户端代码中使用该代码吗?如果是这样,那就是问题所在:

默认情况下,nextjs 使环境变量仅在服务器端环境中可用(因此您不会不小心将秘密暴露给客户端)。 为了向客户端公开某些变量,您必须在它们前面加上 NEXT_PUBLIC_ 像这样:

NEXT_PUBLIC_HOST=http://localhost:8080

console.log(process.env.NEXT_PUBLIC_HOST)    
const socket = io(process.env.NEXT_PUBLIC_HOST)

https://nextjs.org/docs/basic-features/environment-variables#exposing-environment-variables-to-the-browser