【问题标题】:How to access an array declared in node.js server file如何访问在 node.js 服务器文件中声明的数组
【发布时间】:2016-10-17 00:30:23
【问题描述】:

我在 Node.js 应用程序的 server.js 中声明了一个数组。我希望客户端能够访问数组及其内容。那可能吗?如果是,我该怎么做?我尝试了以下,但控制台总是说全局数组未定义

server.js

//connection code above this
var global_array=[];
socket.on('change', function(data){
        socket.broadcast.emit('change', data);
        global_array.push(data);
        console.log(global_array);
    });
.... //rest code

ma​​in.js

if (typeof global_array !== 'undefined' && global_array.length > 0) {
console.log(global_array);
}  else {
console.log("global array not defined");
}

【问题讨论】:

  • 无论输出 HTML 是什么,只要在脚本标签内输出数组?
  • @adeneo 那是 index.html 和当我做 console.log(global_array);它给出了 ReferenceError:global_array is not defined

标签: javascript arrays node.js socket.io


【解决方案1】:

在服务器上定义变量并不意味着它也可以在客户端访问。

我建议在客户端也初始化 global_array 变量。当客户端连接到服务器时,服务器会发送初始数组数据或一个空数组(如果没有数据)。然后,客户端将监听 change 事件。

服务器端代码:

var global_array = [];

io.on('connection', function(socket) {
  socket.emit('initialize array', global_array);
  socket
    .on('change', function(data) {
      socket.broadcast.emit('change', data);
      global_array.push(data);
      console.log(global_array);
    });
});

客户端代码:

var global_array;

socket
  .on('initialize array', function(initial_global_array) {
    global_array = initial_global_array;
  })
  .on('change', function(data) {
    global_array.push(data);
  });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-18
    • 1970-01-01
    • 2011-03-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多