En mi proyecto de nodo + TypeScript, tengo un archivo json con alguna configuración predeterminada. Digamos que se ve así:
{ prop1: 123, prop2: 123 }Y estoy cargando valores de este archivo en algún lugar del camino como este:
import * as defconfig from '../configuration/config.json';Y cuando lo estoy revisando en la consola, veo este resultado:
{ prop1: [Getter], prop2: [Getter], default: { prop1: 123, prop2: 123 } }Y también si trato de anular este objeto con el operador de propagación o Object.assign, el resultado es el siguiente:
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 } }¿Alguien puede explicar de dónde viene el valor predeterminado y cómo deshacerse de él?
El mismo código funciona perfectamente bien cuando no se usa el archivo .json pero se define la configuración con un objeto normal, pero el problema es que tengo que usar el archivo.
Según las últimas versiones de nodos, los archivos JSON no se pueden leer directamente como módulos. A menos que use --experimental-json-modules mientras se ejecuta.
Una solución sería usar el método commonjs (para eso necesitaría cambiar la extensión del archivo a require ) que podrá realizar la tarea o puede usar el módulo fs para leer la cadena JSON y luego analizarla.