#json #angular #typescript #environment
#json #angular #машинопись #Окружающая среда
Вопрос:
У меня проблема с импортом файлов json в typescript. Я настроил файл tsconfig.json в соответствии с соглашением, но он по-прежнему не работает в файле environment.ts, однако в файле environment.prod.ts импорт работает отлично
environment.ts
import { domain, clientId, audience, serverUrl } from '../../auth_config.json';
export const environment = {
production: false,
auth: {
domain,
clientId,
redirectUri: window.location.origin,
audience,
},
dev: {
serverUrl,
},
};
ОШИБКА —>
Не удается найти модуль ‘../../auth_config.json’. Рассмотрите возможность использования ‘—resolveJsonModule’ для импорта модуля с расширением ‘.json’ (2732)
environment.prod.ts
import { domain, clientId, audience, serverUrl } from '../../auth_config.json';
export const environment = {
production: true,
auth: {
domain,
clientId,
redirectUri: window.location.origin,
audience,
},
dev: {
serverUrl,
},
};
Все работает нормально.
Мой файл tsconfig.json
"files": [],
"references": [
{
"path": "./tsconfig.app.json"
},
{
"path": "./tsconfig.spec.json"
}
],
"compilerOptions": {
"outDir": "./out-tsc/app",
"types": [],
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"strict": true,
"resolveJsonModule": true,
"esModuleInterop": true
},
}
Я несколько дней, не найдя причины. Спасибо.
Ответ №1:
Комментарии:
1. Перезагрузил EVC и продолжил с той же проблемой. У меня такое ощущение, что это проблема EVC. Я продолжаю учиться.
Ответ №2:
Только что столкнулся с подобной проблемой и нашел решение на typescriptlang.org . Вам необходимо включить следующую опцию:
resolveJsonModule — позволяет импортировать модули с расширением ‘.json’, что является обычной практикой в проектах узлов. Это включает в себя создание типа для импорта на основе статической формы JSON. TypeScript по умолчанию не поддерживает разрешение файлов JSON.
Поэтому включение этой опции в вашем tsconfig.json в разделе compilerOptions
должно выполнить эту работу:
"files": [],
"references": [
{
"path": "./tsconfig.app.json"
},
{
"path": "./tsconfig.spec.json"
}
],
"compilerOptions": {
"outDir": "./out-tsc/app",
"types": [],
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"strict": true,
"resolveJsonModule": true,
"esModuleInterop": true,
"resolveJsonModule": true
},
}
Возможно, вам также необходимо включить allowSyntheticDefaultImports, чтобы избежать ошибок eslint.