簡體   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