[英]Two variables refers to same config.js File using require (Reference Problem) in Node.js
您好,我在 Node.js 中有这种情况
// config.js
module.exports = {
dataUrlTest: "http://www.google.com",
};
#!/usr/bin/env node
//main.js
var config = require("./config.js");
var editConfigFile = require("./config.js");
console.log();
console.log(config["dataUrlTest"]); // output: http://www.google.com
console.log(editConfigFile["dataUrlTest"]); // output: http://www.google.com
editConfigFile["dataUrlTest"] = "test";
console.log();
console.log(config["dataUrlTest"]); // output: test
console.log(editConfigFile["dataUrlTest"]); // output: test
当我运行“node main.js”时,output 如下:
http://www.google.com
http://www.google.com
test
test
据我从 Node.js 了解需要 function,它传递文件的引用而不是将文件复制到变量!
我的问题是,有没有办法获得文件的副本而不是参考?
我想在不影响配置变量的情况下将 editConfigFile 更改为值,
有这样的东西吗?,我研究了一下,没有找到解决方案,有什么想法吗? 我会很感激的。
由于您正在导入 object,因此您将获得参考。 require function 基本上是导入导出的对象(即module.exports)。
在 JavaScript 中始终引用对象而不是复制对象。 这不是特定于节点的,而是通常针对 JavaScript 的。 这意味着“config”和“editConfigFile”都指向同一个 object。
解决此问题的一种方法是使用 Object.assign() 复制 object。 以下是创建副本的方法:
var config = Object.assign({}, require("./config.js")); //This line basically copies module.exports into a new empty object and returns that the config variable
var editConfigFile = Object.assign({}, require("./config.js"));
现在 config 和 editConfigFile 都是新对象,不会引用旧的 object。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.