Javascript 更新由require引用的文件

Javascript 更新由require引用的文件,javascript,node.js,Javascript,Node.js,我有一个文件(app.js),它通过require导入其他js文件(config.js)。导入的文件导入其他一些文件,依此类推 我可以在app.js中读取导入文件的数据,但现在我想更新导入文件中的值。config.js中的值来自其他导入的文件。我试图用以下方式更新这些值,但它没有更新它们: app.js let config = require ( 'config.js' ); config.db.user = "newUser"; config.js const db

我有一个文件(
app.js
),它通过
require
导入其他js文件(
config.js
)。导入的文件导入其他一些文件,依此类推

我可以在
app.js
中读取导入文件的数据,但现在我想更新导入文件中的值。
config.js
中的值来自其他导入的文件。我试图用以下方式更新这些值,但它没有更新它们:

app.js

let config         = require ( 'config.js' );
config.db.user     = "newUser";
config.js

const dbConfig        = require ( './config-db' );
const assetsConfig    = require ( './config-assets' );
const smtpConfig      = require ( './config-smtp' );

module.exports = {
    db              : dbConfig.db,
    assets          : assetsConfig.assets,
    smtp            : smtpConfig.email
};
config-db.js

module.exports = {
    db : {
        user     : 'user',
        password : '******',
        server   : 'test-db.test.com',
        database : 'testDB',
        timezone : '+02:00'
    }
};
module.exports = {
    db : {
        set update ( data ) { // jshint ignore:line
            this.user = data.user;
        },
        user     : 'user',
        password : '******',
        server   : 'test-db.test.com',
        database : 'testDB',
        timezone : '+02:00'
    }
};
有什么方法可以从
app.js
更新我的
config db
中的值吗?
是否需要执行双向绑定

更新:

使用后,
app.js
的运行实例中会更新该值。文件中的值仍然保持不变。一旦我重新启动app.js,更改就会丢失,这不是我想要的

app.js

let config       = require ( 'config.js' );
config.db.update = "{'user': 'newUser'}";
config-db.js

module.exports = {
    db : {
        user     : 'user',
        password : '******',
        server   : 'test-db.test.com',
        database : 'testDB',
        timezone : '+02:00'
    }
};
module.exports = {
    db : {
        set update ( data ) { // jshint ignore:line
            this.user = data.user;
        },
        user     : 'user',
        password : '******',
        server   : 'test-db.test.com',
        database : 'testDB',
        timezone : '+02:00'
    }
};
config.db是对config-db.js模块的引用

有没有办法从app.js更新配置数据库中的值

为了加快代码加载速度和解决循环
require
引用问题,每个node.js进程都有自己的require缓存。当然,你可以这样清除它-

但更有用的方法是使用热模块重新加载,这可以通过按Web包将服务器端代码编译成包来轻松实现。
在这种情况下,您可以使用ES6导入,也不要考虑重新导入模块-它将自动替换,并重新导入目标变量。

可以使用设置函数吗…@Jonasw您指的是这个吗?是的,但我对nodejs没有太多的经验,也许有人会更清楚地说明为什么uts不工作……我刚刚测试过这个。如果更改app.js中的值,并从其他模块运行console.log,则该值将相同。但是如果你重新启动app.js,更改将被丢弃是的,我知道了。是否有办法在重新启动时保留该值?将配置文件另存为json文件,然后将其作为文件而不是模块打开,然后更改该值,然后覆盖该文件。下次运行app.js时,将出现另一个值