2017-03-11 11 views
0

yeomanを使用してエクスプレスタイプスクリプトプロジェクトを生成しましたが、いつでもアプリケーションを実行すると、ffエラーが発生します: モジュール "morgan"を見つけることができません モジュール "body-パーサクッキーパーサ 『Yeoman Generated Express Typescriptプロジェクトでモジュールエラーが見つかりません

」 はモジュールを見つけることができません』しかし、すべてこれはnode_modulesディレクトリに終了モジュール、私の周りGoogleで検索し、私は見つけることができる唯一のことは、のルートに括弧なしNPMリンク(モジュール名)を実行することでしたプロジェクトが、それでも問題が存在する場合、私はrootでnpmをインストールしようとしましたが、エラーは消えません。私はまた、それらの欠落したモジュールだけをローカルにインストールしましたが、それはまだ動作しません。

私は間違っています。

これは私のapp.tsです。

/// <reference path="./typings/tsd.d.ts"/> 
/// <reference path="./typings/index.d.ts" /> 

import * as path from 'path'; 
import * as logger from 'morgan'; 
import * as express from 'express'; 
import * as bodyparser from 'body-parser'; 
import * as cookieParser from 'cookie-parser' 

// Import our application router class to handle routing. 
import { ApplicationRouter } from './routes/index'; 

// Module for the express application. 
var app = express(); 

// Our express middleware. 
app.use(logger('dev')); 
app.use(bodyparser.json()); 
app.use(bodyparser.urlencoded({ extended: false })); 
app.use(cookieParser()); 

// Global application headers. 
app.use((req: express.Request, res: express.Response, next: Function) => { 
    res.header('Access-Control-Allow-Origin', '*'); 
    res.header('Access-Control-Allow-Method', 'GET, POST, PUT, PATCH, DELETE, OPTIONS'); 
    res.header('Access-Control-Allow-Header', 'Origin, X-Requested-With, Content-Type, Accept'); 
}); 

// Router Module 
let appRouter = new ApplicationRouter(); 

// Application's routes. 
app.use(appRouter.getIndex()); 

// Catch 404 and forward to error handler. 
app.use((req: express.Request, res: express.Response, next: Function) => { 
    var error: any = new Error('Not Found'); 
    error.status = 404; 
    next(error); 
}); 

// Development error handler will print stacktrace. 
if (app.get('env') === 'development') { 
    app.use((error: any, req: express.Request, res: express.Response, next: Function) => { 
    return res.status(error.status || 500); 
    }); 
} 

// Production error handler prints no stacktrace to user. 
app.use((error: any, req: express.Request, res: express.Response, next: Function) => { 
    return res.status(error.status || 500); 
}); 

module.exports = app; 

答えて

0

Typescriptには、これらのモジュールに関連付けられた定義ファイルが必要です。 ファイルは通常コミュニティで管理されています。DefinitelyTyped Github Site

typescript 2.0以降、npmを使用してプロジェクトに追加することは可能です。例えばモルガンのものをインストールするには

は、単に(/// <reference path=メタタグを使用しないでください。定義が使用可能なファイルにする必要がある場合は、すべてのモジュール

ため

npm install @types/morgan 

などを実行しますあなた自身が作成したファイルなど、npmで利用できないファイルは、tsconfig.jsonファイルを使用して、typingsディレクトリがコンパイルパスから除外されていないことを確認してください)

+0

これは半分ですが、r eferenceタグは、npmとは関係なく、ファイルがどのように配布されているか、自分で書いたかどうかは分かりません。あなたが指摘しているようにtsconfig.jsonファイルを実行する必要があります。さらに重要なことは、記述されたライブラリがモジュールであるかどうかです。言い換えれば、ファイルを自分で書いたのであれば、参照タグがモジュールであればそれを使用しません –

関連する問題