javascript - 如何从 node.js 上的另一个 js 文件导入对象数组?
问题描述
大家好! 我想用来自用户的数据创建对象数组。所以我做了类似的东西;
index.js
var create_users = require("./createusers.js");
io.on('connection', function(socket) {
socket.on('all_left_datas', ({name,role,players}) => {
var roomCode = genRoomCode.generate({length:4,numbers:true});
create_users.createUser(roomCode,name,role,socket.id);
socket.join(roomCode);
if(io.sockets.in(roomCode)) {
console.log(create_users.users[socket.id].name + ' joined the room');
io.emit('userNames', name); }
创建用户.js
module.exports.users = {};
module.exports = {
createUser: function(roomCode,name,role,socketID) {
module.exports.users[socketID] = {
roomCode: roomCode,
name: name,
role: role,
userID: socketID
};
} };
但是当我尝试使用它时,我得到了那个错误; TypeError:无法设置未定义的属性'_aEg_PDxugjTMxZHAAAD' 我该怎么办?
解决方案
当您再次分配时,您将覆盖对象的原始定义。当其他东西被分配给它时,曾经存在的东西会被丢弃。你需要:users
module.exports
module.exports
// createusers.js
module.exports = {
users: {},
createUser: function (roomCode, name, role, socketID) {
module.exports.users[socketID] = {
roomCode: roomCode,
name: name,
role: role,
userID: socketID
};
}
};
您还可以考虑使用现代语法和速记属性来使代码更简洁:
createUser(roomCode, name, role, userID) {
module.exports.users[userID] = { roomCode, name, role, userID };
}
推荐阅读
- javascript - 如何将 API 响应映射到 Google 表格
- r - tune r 包(tidymodels)中的 tune_grid 函数出错 - 错误:“参数”对象具有必需的列
- grep - 我怎么能用 grep 排除一行?
- python - 每第 n 个实例在 Numpy 数组中查找最大值
- google-colaboratory - 启动 TensorBoard 失败(以 -6 退出)
- javascript - 在 React 中使用 .map() 时,任何人都可以帮助解决类型错误问题吗?
- python - 使用 Pandas 库更改标题/列名的困难
- vba - 使用 API/宏在 FACE 上按 ID 选择
- php - PHP 只能在几个月的范围内获得即将到来的星期日
- php - 当 Nginx 和 PHP-FPM 通过 unix 套接字通信时,docker 负载平衡是否仍然有效?