在NodeJS中包含的代码中使用局部变量



我试图在包含的代码中使用局部变量,但遇到了一个错误。

app.js:

import RequireDir from "require-dir";
import { Server, Socket } from "socket.io";
...
client.on("connection", (socket) => {
const id = socket.id;
RequireDir("./data", { recurse: true, noCache: true });
}

data/main.js:

console.log(id);

它将在运行时显示此错误:ReferenceError: id is not defined

有什么解决方案吗?

您不能访问在函数外部的函数内部初始化的变量。

问题是你试图用这个套接字ID做什么。这个套接字ID对每个会话都是唯一的,你不应该把它暴露给全局变量。最好的方法是编写一个接受该ID并处理它的函数

data/main.js:

export const handleSocket = (socket) => {
console.log(socket.id);
// ... rest of your code
};

app.js:

import RequireDir from "require-dir";
import { Server, Socket } from "socket.io";
import { handleSocket } from "data/main.js"; // import the function
...
client.on("connection", (socket) => {
// pass socket to your handler
handleSocket(socket);
RequireDir("./data", { recurse: true, noCache: true });
}

您可能想了解javascript闭包,以了解变量的作用域。

相关内容

最新更新