我有两个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