从json文件加载的对象将其值分配给一个名为default的属性



在我的node + TypeScript项目中,我有一个带有一些默认配置的json文件。假设它看起来像这样:

{
prop1: 123,
prop2: 123
}

我正在从这个文件中加载值,就像这样:

import * as defconfig from '../configuration/config.json';

当我在控制台中检查它时,我看到这样的输出:

{
prop1: [Getter],
prop2: [Getter],
default: {
prop1: 123,
prop2: 123
}
}

如果我试图用扩展操作符或对象覆盖这个对象。赋值,结果如下:

const options = {
prop1: 321,
prop2: 321
};
console.log({...defconfig, ...options});
//OR
console.log(Object.assign(defconfing, options));
//produces
{
prop1: 321,
prop2: 321,
default: {
prop1: 123,
prop2: 123
}
}

谁能解释一下默认值是从哪里来的以及如何摆脱它?

相同的代码在不使用.json文件但用正常对象定义配置时工作得很好,但问题是我必须使用该文件。

根据最新的节点版本,JSON文件不能作为模块直接读取。除非你在运行时使用--experimental-json-modules标志。

一个解决方案是使用commonjs(为此,您需要将文件扩展名更改为。cjs)方法require,这将能够完成任务,或者您可以使用fs模块读取JSON字符串,然后解析。

相关内容

最新更新