私は2つのjavascriptファイルを持っています。わかりやすくするために、私はルータを作成しました。私は1つの変数を維持し、javaの静的フィールドに似た、すべてのファイルにわたってその値を変更したいと考えています。初期化したい変数は初期化されません。グローバル変数は初期化されませんnodejs
私はVmessages変数を持っています。他のファイルでその値を変更してserver.jsファイルの変更にアクセスできるように、javaの静的変数に似たものにしたいと思います。これは、だから私はserver.jsファイルVmessages変数をインポートし、messages.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ファイルです。以下のコードスニペットでわかるように、私は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ファイルを更新することができます。それは1つのオプションです – JordanHendrix