-1

cloud9 ide を使用していますが、タイトルに記載されているエラーが発生します。ファイル構造はこんな感じ

client/
  views/
   -index.ejs
   routes/
    -index.js
-server.js 

server.js ファイル

var path = require('path');
var async = require('async');
var express = require('express');
var router = express();
var server = http.createServer(router);

router.use(express.static(path.resolve(__dirname, 'client')));


router.set('view engine','ejs');
//app.set('views','app/views');
router.locals.siteTitle = "Meetups";

//router.use(express.static(path.resolve('./public')));
router.use(require('./client/routes/index'));
router.use(require('./client/routes/speaker'));
 server.listen(process.env.PORT || 3000, process.env.IP || "0.0.0.0", function(){
  var addr = server.address();
  console.log("Chat server listening at", addr.address + ":" + addr.port);
});

エラーを受け取っているroutesフォルダー内の私のindex.js

TypeError: 未定義の router.get('/',function(req,res){ のプロパティ 'get' を読み取れません

 var express = require('express');
var router = express.Router();
  router.get('/',function(req,res){
  res.render('index',{
    pageTitle:'Home',
    pageID:'home',
  });
});

module.exports = router;
4

1 に答える 1

0

あなたのコードを私の c9 ide にコピーしました。

server.js の最初の問題は、http モジュールを要求する必要があります。

var http = require("http");

そして、あなたがこのファイルを共有しなかったので、この行を削除しました。

router.use(require('./client/routes/speaker'));

出来た。少なくとも、Node はエラーをスローしませんでした。

0.0.0.0:8080 でリッスンしているチャット サーバー

しかし、いくつかお勧めがあります。

  • まず、server.js で "router" 変数を "app" にリネームしてください。これはルート モジュールではないためです。
  • パブリック フォルダーには、クライアント フォルダーを使用せず、"public" という名前のフォルダーを作成します。クライアントフォルダーにルート、ビューなどがあるためです。
  • 必要な式については、ファイルの先頭に作成してみてください。
var routes = require('./client/routes');

// some code ...

app.use('/', routes);
  • また、ルート用にファイルを 1 つだけインポートします。routes/index.js に他のルート ファイルをインポートする

  • server.listen の直前に createServer を好む

var server = http.createServer(app);
server.listen(...)
于 2016-12-24T04:53:23.687 に答える