繁体   English   中英

两个变量在 Node.js 中使用 require(参考问题)引用相同的 config.js 文件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM