【发布时间】:2017-08-28 03:46:44
【问题描述】:
我有两个 javascript 文件。为简单起见,我创建了路由器,我想维护一个变量并在所有文件中更改其值,类似于 java 的静态字段。但我要初始化的变量没有被初始化。
就像在 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 文件中更改了它的值。正如您在下面的代码 sn-p 中看到的,我可以访问 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 文件来更新,这是一种选择
标签: javascript node.js routes