2016-12-16 3 views
0

NodeJS、Hapi、およびtypescriptを使用してマイクロサービスを作成しようとしています。 でしたが、自分のサービスを作成して、私が望むディレクトリ構造を使用してインポートすることはできません。その構造は基本的には次のとおりです。TypeCriptモデルをインポートできません。typeof型と参照エラーでプロパティが終了しません。

/server.ts 
/tsconfig.json 
/packages.json 
/Services/ 
     /CarService.ts 
     /BoatService.ts 
/Models 
     /Car.ts 
     /Boat.ts 
/Tests 
/Bundle 

私のビジネスロジックからモデルを分離しようとしています。私のサービスの一つは、次のようになります。

module Services { 
    export class CarService { 
     saveCar(data: any): boolean { 
      return false; 
     } 
    } 
} 

だけでなく、このように見えた:

class CarService { 
    saveCar(data: any): boolean { 
     return false; 
    } 
} 
export {CarService} 

私は私のserver.ts

import CarService = Services.CarService; 
let _carService = new CarService(); 

にこのサービスをインポートしようとしているが、それはしてきました私が第2版の第2版のためにこのように見えたのは

import * as _carService from './Services/CarService'; 

と私はこのようなservcieを使用しようとしていた。

server.route({ 
    method: 'POST', 
    path: '/Cars/', 
    handler: function (request:any, reply) { 
     _carService.saveCar(request.payload); // the error is here 
     //_carService["saveCar"](request); 
     reply("we did it!"); 
    } 
}); 

第1の方法は私にこのエラーを与えていた。

Property 'saveCar' does not exist on type 'typeof CarService'.

第2の方法は、視覚コードにコンパイルしますが、私はこのエラーを与えています。

ReferenceError: CarService is not defined

私のTSconfig:

{ 
    "compilerOptions": { 
     "module": "commonjs", 
     "moduleResolution": "node", 
     "outDir": "bundle", 
     "target": "es5", 
     "noImplicitAny": false, 
     "sourceMap": true, 
     "declaration": true 
    }, 
    "filesGlob": [ 
     "./**/*/.ts" 
    ] 
} 

明らかに私のモジュールは正しくコンパイルされていません。エラーがtsconfigモジュール解決戦略または出力ディレクトリに関連しているかどうかはわかりません。私はあまりにもその設定を手抜きしました。私は、モジュール解決戦略が最初に/src/フォルダにあることをドキュメントを読むことから知っていますが、ある時点で私はrootDirs' array in my tsconfig.json that pointed to my/Models/and/Services/`というディレクトリを持っていました。

答えて

1

その後、server.tsでクラスをインポートし、CarService.tsexport defaultを使用することができます。

// Services/CarService.ts 
export default class CarService { 
    saveCar(data: any): boolean { 
     return false; 
    } 
} 

// server.ts 
import CarService from './Services/CarService'; 
let _carService = new CarService(); 

も参照してください:

+0

私はぐふ、すべての組み合わせを試していたそう確信していました。ありがとう。 – dckuehn

関連する問題