Node.js如何永久修改另一文件导出的javascript对象属性值
解决方法
你当前的写法仅修改了内存中缓存的模块对象,不会自动同步写入磁盘源文件,因此重启进程后修改就会失效,必须借助fs模块手动完成文件写入实现持久化。
具体实现代码
直接复用你原有修改内存对象的逻辑,新增写回文件的逻辑即可:
const fs = require('fs'); const path = require('path'); // 加载原对象 const { Core } = require('./settings/Core.js'); // 修改指定属性,和你原有写法一致 Core['config']['test'] = "MY NEW VALUE"; // 生成和原文件结构一致的代码内容 const newFileContent = `const Core = new Object(); Core['config'] = ${JSON.stringify(Core.config, null, 4)} // Export the Core module.exports.Core = Core; `; // 拼接绝对路径避免相对路径寻址错误 const coreJsPath = path.resolve(__dirname, './settings/Core.js'); // 写入文件完成持久化 fs.writeFileSync(coreJsPath, newFileContent, 'utf-8');
注意事项
- 上述代码会完全保留原文件的结构,仅替换config对象内的属性值,不会破坏原有格式
- 如果后续你给Core对象新增了其他顶层属性,只需要同步调整
newFileContent的代码模板即可 - 如果配置项较多,更推荐将配置抽离为独立的JSON文件存储,读写不需要维护JS模板,稳定性更高:
- 新建
coreConfig.json,内容为{"config":{"test":"Test"}} - Core.js中改为读取JSON文件导出:
const coreConfig = require('./coreConfig.json'); const Core = { config: coreConfig }; module.exports.Core = Core;- 修改时直接读写JSON文件即可,代码更简洁。
- 新建
内容的提问来源于stack exchange,提问作者Tuncion
相关产品推荐
相关产品推荐

