/ / Не мога да намеря грешки в модули в проекта за генериран от Yeoman Express Express Typescript - node.js, express, typecript, yeoman-generator

Не мога да намеря модули Грешка в Yeoman Generated Express Типскрипт Проект - node.js, експрес, машина, генератор

Създадох експресен проект за машинописyeoman и по всяко време пускам приложението, да получите грешките на ff: Не мога да намеря модул "morgan" Не може да се намери модул "анализатор на тялото" Не може да се намери модул „анализатор на бисквитки“

Но всички тези модули излизат в node_modulesдиректория, аз се огледах наоколо и единственото нещо, което можех да намеря, беше да стартирам npm връзка (име на модул) без скоби в корена на проекта, но все пак проблемът съществува, опитах 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 за отговор № 1

Typescript се нуждае от файловете за дефиниция, свързани с тези модули. Файловете обикновено се поддържат в общността и се предоставят на Определено типизиран сайт на Github

Тъй като typecript 2.0, е възможно да ги добавите към проекта с помощта на npm.

За да инсталирате тези за Morgan например, просто стартирайте

npm install @types/morgan

и така нататък за всеки модул

(избягвайте използването на /// <reference path= мета-таг. Ако има нужда да направите достъпни файлове с дефиниции, които не са достъпни чрез npm - като например този, създаден от вас сами - просто използвайте tsconfig.json файл и се уверете, че typings директория не е изключена от компилационния път)