разрешение baseUrl и путей с использованием Webpack 2 и awesome-typescript-loader

Я хочу настроить свой проект так, чтобы я использовал следующую строку:

import { BlahBlahService } from '@blahblah/core/BlahBlahService';

решено:

./dist/blahblah/core/BlahBlahService

Я уже прочитал онлайн-ресурсы и применил указанные настройки (которые я также включаю ниже). Это работает в Visual Studio Code; т.е. он не показывает мне ошибки, поэтому он может правильно прочитать мои настройки в tsconfig и понять их. Я хочу сделать то же самое с Webpack.

Однако я получаю следующую ошибку:

ОШИБКА в ./xxxxxxxxxxx.ts Модуль не найден: Ошибка: не удается разрешить «@ blahblah / core / BlahBlahService» в «xxxxxxxxxxxxxxxxxxxxxxxxxxxx»

В моем веб-приложении есть следующие настройки:

  • Angular 2 Версия 2.2.0
  • Машинопись версии 2.0.8
  • Webpack версии 2.1.0-beta.26
  • awesome-typescript-loader Версия 2.2.4

В моем tsconfig также есть следующее:

"compilerOptions": {

    ...

    "baseUrl": ".",
    "paths": {
       "@blahblah/core": ["./dist/blahblah/core"],
       "@blahblah/core/*": ["./dist/blahblah/core/*"],
    }

    ...

 }

И в моем файле webpack.js есть следующие настройки:

plugins: [

    ...

    new TsConfigPathsPlugin(),

    ...
],

person Aidin    schedule 11.12.2016    source источник
comment
Попробуйте повысить версию машинописного текста до 2.1. Согласно github.com/Microsoft/TypeScript/wiki/ он должен работать без плагина.   -  person Michał Ignaszewski    schedule 14.12.2016


Ответы (2)


В настоящее время я работаю с [email protected] и [email protected].
Та же проблема. Я нашел решение в проблеме с github.

tsconfig.js:

"compilerOptions": {

    ...

    "baseUrl": ".",
    "paths": {
        "~/*": ["./src"],
    }
}

webpack.config.js:

var TsConfigPathsPlugin = require('awesome-typescript-loader').TsConfigPathsPlugin;

resolve: {
    alias: {
        "~/": "./src"
    },
    plugins: [
        new TsConfigPathsPlugin()
    ]
}
person borracciaBlu    schedule 14.12.2017
comment
Чтобы было ясно, alias, похоже, не требуется. Проблема в том, что строка, которая добавляет плагин, new TsConfigPathsPlugin(), должна находиться под блоком resolve. Не только plugins в главном объекте параметров, но и resolve.plugins. - person KhalilRavanna; 20.03.2019

У меня была такая же проблема. Он должен работать, но это не так.

Мое обходное решение - добавление атрибута browser в package.json с теми же псевдонимами, что и в tsconfig.

package.json

{
   "name": "app",
   ...
   "browser": {
      "@blahblah/core": ["./dist/blahblah/core"],
      "@blahblah/core/*": ["./dist/blahblah/core/*"]
   },
   "scripts": { ... },
   ...
}
person Michał Ignaszewski    schedule 19.12.2016
comment
Я еще не пробовал это сделать, но все равно даю вам награду, потому что срок ее действия скоро истечет. Я попробую это сделать и сообщу вам, решит ли это мою проблему. Спасибо. - person Aidin; 19.12.2016
comment
Так ты дал ему знать? - person DDD; 24.05.2017
comment
если вы скопируете пути из tsconfig в файл resol.alias webpack, он должен работать. Это не лучшее решение, но я считаю, что для него есть плагин TsConfigPathsPlugin. github.com/s-panferov/awesome-typescript-loader/issues/ 311 - person Eduard Jacko; 07.09.2017