gpt4 book ai didi

javascript - 全局变量未初始化nodejs

转载 作者:行者123 更新时间:2023-12-03 03:34:56 27 4
gpt4 key购买 nike

我有两个 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 文件中更改了它的值。正如您在下面的代码片段中看到的,我可以访问 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;

我哪里搞错了?

最佳答案

@M.Ramzan 使用此代码。我对路线代码做了一些更改。这可以根据您的要求进行操作。这里是server.js文件

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

var variableName;
var Vmessages = [{text: 'some text', owner: 'Tim'},{text: 'other message', owner: 'Jane'}];

app.get('/messages', (req, res) => {
res.json(Vmessages);
});

exports.variableName = Vmessages;

app.use(require('./routes/messages'));

app.listen(3000,function(){
console.log("Server listening on 3000");
});

这是messages.js文件

//messages.js file
var express = require('express');
var bodyParser = require('body-parser');
var sourceFile = require('../server.js');
var app = express();
var messages = sourceFile.variableName;
var router = express.Router();
router.use(bodyParser.json());

router.post('/messages', (req, res) => {

console.log(sourceFile.variableName);
messages.push(req.body);
res.json(messages);
});

module.exports = router;

将 serevr 作为 node server.js 运行。您可以使用 get 方法以 http://localhost:3000/messages 形式获取 Vmessages 中的数据。您可以使用 post 方法使用 http://localhost:3000/messages 将数据添加到 Vmessages。您可以使用请求正文添加数据。希望这会有所帮助......

关于javascript - 全局变量未初始化nodejs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45911550/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com