簡體   English   中英

如何在Node.js&Express中使用全局變量(可共享變量)

[英]how to use global variable(sharable variables) in Node.js&Express

我有一個名為data.js的文件,用於將數據保留為內存數據庫。

var express = require('express');
var app = express();

var aList;
var bList;
var cList;

module.exports = app;

而且我想在啟動服務器時初始化數據。 因此,我在app.js實現了init()

...
var data = require('./data'); // data.js is located in the same folder.

app.set(...);
app.use(...);
...

init();

...

});

fun init(){
    console.log("Hello!");

    aList = getDumpDataList(10); // I also tried with 'data.aList = getDumpDataList(10);' but didn't work.

    console.log(JSON.stringify(aList));
}

fun getDumpDataList(n){
    var list;

    ... // for loop to generate random elements.

    return list;
}

module.exports = app;

當我用console.log()打印時, Hello! 被打印但aList不被打印但undefined

我也想在routes文件夾下的路由器中使用數據。

所以,我所做的是。

...
var data = require('./data');

route.get("/...", function(req, res, next){
    console.log(JSON.stringify(aList));
    ...
});

但這也是undefined

我只是做一個簡單的測試服務器,每當我重新運行時就初始化數據。

如何在js文件之間共享變量?

您不導出這些變量:

const express = require('express');
const app = express();

let aList;
let bList;
let cList;

module.exports.app = app;
module.exports.aList = aList;
module.exports.bList = bList;
module.exports.cList = cList;
  • ...但是我不會將express放在data.js ,而是將其放在app.js
  • 如果初始數據不依賴於其他內容,我也將使用data.js初始值來初始化這些變量。
  • 最后但並非最不重要的一點:不要再使用var ,而應使用letconst 自節點6+( https://node.green/ )開始受支持。 我在代碼中替換了它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM