У меня есть приложение Ionic, которое использует несколько файлов среды:
- environment.dev.ts (dev)
- environment.local.ts (local)
- environment.ts (prod)
Я использовал путь для разрешения конфигурации с помощью следующего webpack.conf.js:
const chalk = require('chalk');
const fs = require('fs');
const path = require('path');
const useDefaultConfig = require('@ionic/app-scripts/config/webpack.config.js');
const env = process.env.MY_ENV || 'local';
useDefaultConfig.prod.resolve.alias = {
"@app/env": path.resolve(environmentPath('prod'))
};
useDefaultConfig.dev.resolve.alias = {
"@app/env": path.resolve(environmentPath('dev'))
};
if (env !== 'prod' && env !== 'dev') {
// Default to dev config
useDefaultConfig[env] = useDefaultConfig.dev;
useDefaultConfig[env].resolve.alias = {
"@app/env": path.resolve(environmentPath(env))
};
}
function environmentPath(env) {
const filePath = './src/environments/environment' + (env === 'prod' ? '' : '.' + env) + '.ts';
if (!fs.existsSync(filePath)) {
console.log(chalk.red('\n' + filePath + ' does not exist!'));
} else {
return filePath;
}
}
module.exports = () => useDefaultConfig;
У меня есть конфигурация кармы, которая загружает определенныйtsconfig, который находится в той же папке с именем test-config:
karmaTypescriptConfig: {
tsconfig: "./tsconfig.spec.json"
},
Мой tsconfig:
{
"compilerOptions": {
"allowSyntheticDefaultImports": true,
"declaration": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"lib": [
"dom",
"es2017"
],
"module": "es2015",
"moduleResolution": "node",
"sourceMap": true,
"target": "es5",
"baseUrl": "./../",
"paths": {
"@app/env": [
"src/environments/environment"
]
}
},
"noUnusedLocals": true,
"noUnusedParameters": true,
"exclude": [
"../node_modules",
"src/**/*.spec.ts"
],
"compileOnSave": false,
"atom": {
"rewriteTsconfig": false
}
}
У меня тот же tsconfig, когда я запускаю ionic serve
и получил путьрешен и все работает.
Но когда я запускаю karma для выполнения тестов, у меня появляется следующая ошибка:
Модуль не найден: Ошибка: не удается разрешить '@app/ env '
Не знаю почему, но кажется, что карма не загружает мой пользовательский tsconfig.
Спасибо за вашу помощь.