Карма - Жасмин не может разрешить путь машинописи в приложении Ionic - PullRequest
0 голосов
/ 05 июня 2018

У меня есть приложение 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.

Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 05 июня 2018

Я наконец добавляю следующие строки в мою конфигурацию кармы -> Конфигурация удаленного веб-пакета:

resolve: {
    extensions: ['.ts', '.js'],
    alias: {
      '@app/env': path.resolve(__dirname, '../src/environments/environment.local.ts')
    }
  },
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...