Ich habe ein Express-Typoskript-Projekt mit erzeugtyeoman und immer wenn ich die Anwendung starte, bekomme ich die ff-Fehler: Kann Modul "morgan" nicht finden Kann Modul "body-parser" nicht finden Kann Modul "Cookie-Parser" nicht finden
Aber all diese Module existieren in den node_modulesIch habe im Verzeichnis gegoogelt und das einzige, was ich finden konnte, war, npm link (modulename) ohne geschweifte Klammern im Stammverzeichnis des Projekts auszuführen, aber das Problem besteht immer noch. Ich habe versucht, npm im Stammverzeichnis zu installieren, und der Fehler verschwindet nicht Ich habe auch nur die fehlenden Module lokal installiert und es funktioniert immer noch nicht.
Was mache ich falsch.
Das ist meine 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;
Antworten:
0 für die Antwort № 1Typescript benötigt die diesen Modulen zugeordneten Definitionsdateien. Die Dateien werden in der Regel von der Community gepflegt und auf der zur Verfügung gestellt Definitiv typisierte Github-Site
Seit typescript 2.0 ist es möglich, sie mit npm zum Projekt hinzuzufügen.
Um diese zum Beispiel für morgan zu installieren, führen Sie einfach aus
npm install @types/morgan
und so weiter für jedes Modul
(Vermeiden Sie die Verwendung von /// <reference path=
Meta-Tag. Wenn Sie Definitionsdateien zur Verfügung stellen müssen, die nicht über npm verfügbar sind - wie die von Ihnen erstellte -, verwenden Sie einfach a tsconfig.json
Datei und stellen Sie sicher, dass die typings
Verzeichnis ist nicht vom Kompilierungspfad ausgeschlossen)