摩根弃用 expressjs

morgan deprecated expressjs

我正在通过教程学习 nodejs。我遇到了教程适用于旧版本的问题。

我有那个代码:

var express = require('express'),
    stylus = require('stylus'),
    logger = require('morgan'),
    bodyParser = require('body-parser');

var env = process.env.NODE_ENV = process.env.NODE_ENV || 'development';

var app = express();

function compile(str, path){
    return stylus(str).set('filename', path);
}

app.set('views', __dirname + '/server/views');
app.set('view engine', 'jade');
app.use(logger);
app.use(bodyParser.urlencoded({ extended: true }));
app.use(stylus.middleware(
        {
            src: __dirname + '/public',
            compile: compile
        }
    ));
app.use(express.static(__dirname + '/public'));


app.get('*', function(req, res) {
  res.render('index');
});

var port = 3131;
app.listen(port);
console.log('Listening on port ' + port + '...');

当我尝试进入时 http://localhost:3131/ 网站在浏览器中停止响应

This site can’t be reached

The connection was reset.

在 nodemon 中它说:

如果我删除 morgan 一切正常。我该如何解决?

错误日志显示 "Morgan deprecated default format: use combined format"。

很简单,替换

app.use(logger);

app.use(logger('combined'));

只需使用 app.use(morgan("dev)) 并确保将 morgan 的导入放在导入的顶部。如果将其放在导入的下方或为了满足所需的依赖项,它会出错..

像这样:

import express from "express";
import morgan from "morgan";

import postRoutes from "./routes/postRoutes.js";

如果你把你的摩根进口放在这样的路线下面,

import express from "express";

import postRoutes from "./routes/postRoutes.js";
import morgan from "morgan";

它会给你一个“错误:听 EADDRINUSE:地址已经在使用”...

希望这对任何人都有帮助...