Относительные пути. baseUrl и пути не работают на ionic2 - angular2

Я читал о подобных переполнениях стека, но я не смог понять это. Я должен пропустить маленький шаг.

Моя цель - уметь:

import { Logger } from 'logging'

вместо

import { Logger } from '../../modules/logging'

Мой tsconfig выглядит так:

{
  "compilerOptions": {
    "allowSyntheticDefaultImports": true,
    "declaration": false,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "lib": [
      "dom",
      "es2015"
    ],
    "module": "commonjs",
    "moduleResolution": "node",
    "sourceMap": true,
    "target": "es5",
    "baseUrl": ".",
    "paths":{
      "*":[
        "src/app/*",
        "node_modules/*"
      ]
    }
  },
  "include": [
    "src/**/*.ts"
  ],
  "exclude": [
    "node_modules"
  ],
  "compileOnSave": false,
  "atom": {
    "rewriteTsconfig": false
  }
}

Моя структура папок что-то вроде

src
--- app
------- logging
--------------- index.ts (contains exports for the provider and the ngModule)
--------------- logger.provider.ts (contains an injectable provider)
--------------- logging.module.ts (contains the ngModule)
--- app.module.ts

Индекс в основном имеет это:

export { LoggingModule } from './logging.module';
export { LoggerProvider } from './logger.provider';

Разумеется, я исключил файлы из структуры. app.module.ts — это мой начальный класс, в который я пытаюсь импортировать свой модуль «логирования». Код Visual Studio не жалуется на мой импорт.

//import { FIREBASE_CONFIG } from 'configs';
import { NgModule, ErrorHandler } from '@angular/core';
import { IonicApp, IonicModule, IonicErrorHandler } from 'ionic-angular';
import { MyApp } from './app.component';
import { HomePage } from '../pages/home/home';
import { AngularFireModule } from "angularfire2";
import { LoggingModule } from 'logging'; 
import { PostsModule } from 'posts';

@NgModule({
  declarations: [
    MyApp,
    HomePage
  ],
  imports: [
    IonicModule.forRoot(MyApp),
    PostsModule,
    LoggingModule
    //AngularFireModule.initializeApp(FIREBASE_CONFIG),
  ],
  bootstrap: [IonicApp],
  entryComponents: [
    MyApp,
    HomePage
  ],
  providers: [{provide: ErrorHandler, useClass: IonicErrorHandler}]
})
export class AppModule {}

Как я уже сказал, VSC не показывает никаких ошибок, но когда я запускаю приложение в браузере, я получаю:

Error: Cannot find module "logging"
    at Object.<anonymous> (http://localhost:8100/build/main.js:82202:7)
    at __webpack_require__ (http://localhost:8100/build/main.js:20:30)
    at Object.<anonymous> (http://localhost:8100/build/main.js:105047:70)
    at __webpack_require__ (http://localhost:8100/build/main.js:20:30)
    at http://localhost:8100/build/main.js:66:18
    at http://localhost:8100/build/main.js:69:10

Я действительно не хочу возвращаться к длинным относительным маршрутам, потому что 1) это утомительно и 2) рефакторинг станет кошмаром, когда приложение разрастется.

Спасибо!


person yafrack    schedule 24.12.2016    source источник
comment
Насколько я знаю, если вы импортируете свой собственный модуль из того же проекта, вам нужно будет использовать относительные URL-адреса. Я импортировал без относительных URL-адресов только в том случае, если он был установлен из npm, который был бы модулем, указанным в вашем package.json.   -  person adriancarriger    schedule 24.12.2016
comment
попробуй tsc --traceResolution в app   -  person raj    schedule 24.12.2016
comment
paste.ee/p/bXxZx   -  person yafrack    schedule 24.12.2016


Ответы (1)


Я подозреваю, что moduleResolution, для которого установлено значение node, может быть причиной проблемы. Измените его на classic и посмотрите, разрешена ли проблема.

"compilerOptions": {
    "moduleResolution": "classic"

Изучите эту проблему . Надеюсь, это решит ошибку.

person raj    schedule 24.12.2016
comment
Привет. Спасибо. Я не добавлял это сам, это часть ионной установки. Дело в том, что смена на классическую все ломает. то есть: не удается найти имя «Observable», не удается найти имя «AngularFireDatabase» и т. д. - person yafrack; 25.12.2016
comment
путь не включает папку node_modules? - person raj; 25.12.2016