2016-12-24 11 views
2

Я читал об аналогичных переполнениях стека, но я не смог понять это. Я должен пропустить небольшой шаг.Относительные пути. 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 - это мой класс ввода, в котором я пытаюсь импортировать модуль «logging». Код 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) будет делать рефакторинг кошмара, когда приложение растет.

Спасибо!

+0

Насколько я знаю, если вы импортируете свой собственный модуль из того же проекта, вам нужно будет использовать относительный url. Я импортировал только относительный url, если он был установлен из npm, который был бы модулем, указанным в вашем 'package.json'. – adriancarriger

+1

попробуйте '' tsc --traceResolution'' в '' app'' – raj

+0

https://paste.ee/p/bXxZx – yafrack

ответ

0

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

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

Посмотрите на этот issue. Надеюсь, что он решает ошибку.

+0

Привет. Благодарю. Я сам этого не добавлял, это часть ионной установки. Дело в том, что сменить его на классический все. т.е.: Не удается найти имя «Observable», не удается найти имя «AngularFireDatabase» и т. д. – yafrack

+0

не содержит путь к папке node_modules? – raj

+0

Да добавлено: / – yafrack