ホーム>source

ルーティングしようとするとこのエラーが発生します

私のコード
'use strict';
const express = require('express');
const app = express ();
const chatCat = require ('./app');

app.set('port', process.env.PORT || 3000);
app.use(express.static('public'));
app.set('view engine', 'ejs');
app.use('/', chatCat.router);

app.listen(app.get('port'), () => {
    console.log('running on port:', app.get('port'));
});

エラー
throw new TypeError('Router.use() requires a middleware function but got a ' + gettype(fn))
          ^

ルーティングを試みますが、express.jsからエラーが発生し続けます

あなたの答え
  • 解決した方法 # 1

    このコードを試してください:

    var express = require('express');
    var app = express();
    
     app.set('port', process.env.PORT || 3000);
     app.use(express.static('public'));
     app.set('view engine', 'ejs');
    var chatCat = require('./app');
    app.use('/',chatCat);
    app.listen(port,function(){
        console.log("Server is running on port: "+port);
    });
    
    

  • 解決した方法 # 2

    このhttps://expressjs.com/en/starter/generator.htmlでアプリを作成してみてください。プロジェクトの素晴らしい構造が作成されます。あなたのエラーに関しては-それは高速ミドルウェア機能である必要があります。 app.jsからルーターをインポートすることはできません。そのようなプロパティがないためです。ここで説明するルートを使用する場合は、次を使用します。

       app.method('/yourRoute', function(req, res, next){
           //your middleware code
        });
    
    

    これも変更します:

      app.listen(app.get('port'), () => {
         console.log('running on port:', app.get('port'));
       });
    
    

    これに:

    app.listen(3000);
    
    

    そして、あなたはあなたが望む未使用のポートに3000を変更することができます

関連記事

  • 前へ java - JPAクエリ:サブクエリをグループ化条件に結合する
  • 次へ ios - NSTimerを使用してバックグラウンドスレッドの実行を一時停止する