我有兩個JavaScript文件。爲了簡單起見,我創建了路由器,並且我想維護一個變量並在所有文件中更改其值,類似於Java的靜態字段。但我想要初始化的變量不會初始化。全局變量未初始化nodejs
就像在server.js文件中我有Vmessages變量我想使它類似於java的satic變量,所以我可以在另一個文件中更改它的值並訪問server.js文件中的更改。這是server.js文件,
//server.js file
var Vmessages = [{text: 'some text', owner: 'Tim'},{text: 'other message', owner: 'Jane'}];
app.get('/messages', (req, res) => {
res.json(Vmessages);
});
module.exports.variableName = Vmessages;
app.use(require('./routes/messages'));
所以我已導入server.js文件Vmessages變量,並改變其在messages.js文件值。正如你可以在下面的代碼片段中看到的,我可以訪問server.js文件的變量並進行更改。甚至當我打印它時,它也會顯示更改。但是,當我訪問server.js文件中的Vmessages時,它的值沒有改變,並且它的初始值是。
//messages.js file
var sourceFile = require('../server.js');
var messages = sourceFile.variableName;
router.post('/messages', (req, res) => {
console.log(sourceFile.variableName); //[{text: 'some text', owner: 'Tim'}]
messages.push({text: 'other message', owner: 'Jane'});
console.log(sourceFile.variableName); //[{text: 'some text', owner: 'Tim'},{text: 'other message', owner: 'Jane'}]
res.json(req.body);
})
module.exports = router;
哪裏錯了?
你無法從messages.js更新server.js中的變量。它根本不會那樣工作。在服務器中,你設置變量,它保持在服務器中。你可以有一個單獨的JSON文件,你更新,多數民衆贊成在一個選項 – JordanHendrix