/ / Kann Modulfehler in von Yeoman erstelltem Express-Typenskript-Projekt nicht finden - node.js, express, typescript, yeoman-generator

Modulfehler in Yeoman-generiertem Express-Typoskript-Projekt nicht gefunden - node.js, express, Typoscript, yeoman-generator

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 № 1

Typescript 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)