从 node.js 中的模块获取 'random' 值

Getting a 'random' value from a module in node.js

假设我有一个如下所示的文件:

var random_nr = Math.floor(Math.random()*array.length);
var x = array[random_nr];
// do some things

exports.random_array_member = x

现在,如果我 'require' 在另一个文件中,只要我不重新启动服务器,我总是会得到相同的结果,大概是因为缓存?

运行 此代码并获得随机值的最佳方法是什么,同时不将代码包含到我的主文件中?

您显示的代码只执行了一次。然后将该代码的结果存储为一个变量,随时可以导出到任何需要它的文件。

相反,您需要 "call" 代码,此时您需要一个随机变量:

exports.random_array_member = function(){
    var random_nr = Math.floor(Math.random()*array.length);
    return array[random_nr];
}

现在,您可以在其他文件中调用 exports.random_array_member(),而不是访问 exports.random_array_member

让我们玩getters

random.js

var array = [1, 2, 3, 4, 5];

module.exports = {
  get random_array_member() {
    return array[Math.floor(Math.random()*array.length)]
  }
}

consumer.js

var r = require('./random')

console.log(r.random_array_member)
console.log(r.random_array_member)
console.log(r.random_array_member)