2016-06-25 8 views
1

これは私を狂ってしまいます。 NodeJs、ExpressJs、Angularを使ってアプリを作成しました。私はクライアントのフォルダを持っています。これはAngular drivenとServerフォルダで、私はExpressJs REST APIを持っています。ExpressJs APIを持つNodeJsはサーバーに公開すると404になります

私のローカルシステムでは、IPアドレスとポートを使用しており、次のようになります。 0.1.2.3:3000/getusers。これは私のシステムでうまく動作します。

私はそれをホストにプッシュすると、APIを呼び出すときに404エラーが発生します。クライアントは大丈夫です。デベロッパーコンソールでは、同じURLフォーマット2.2.2.3:3000/getusersを見ることができます。

私はここで何が欠けていますか?

これは私が使用しているapp.js設定は次のとおりです。

var express = require('express'); 
var path = require('path'); 
var favicon = require('serve-favicon'); 
var logger = require('morgan'); 
var cookieParser = require('cookie-parser'); 
var bodyParser = require('body-parser'); 

var routes = require('./routes/index'); 
var users = require('./routes/users'); 
var getusers = require('./routes/getusers'); 
var test = require('./routes/test'); 

var app = express(); 

// uncomment after placing your favicon in /public 
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico'))); 
app.use(logger('dev')); 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ extended: false })); 
app.use(cookieParser()); 

/** 
* Development Settings 
*/ 
if (app.get('env') === 'development') { 
    // This will change in production since we'll be using the dist folder 
    app.use(express.static(path.join(__dirname, '../client'))); 
    // This covers serving up the index page 
    app.use(express.static(path.join(__dirname, '../client/.tmp'))); 
    app.use(express.static(path.join(__dirname, '../client/app'))); 

    // Error Handling 
    app.use(function(err, req, res, next) { 
     res.status(err.status || 500); 
     res.render('error', { 
      message: err.message, 
      error: err 
     }); 
    }); 
} 

/** 
* Production Settings 
*/ 
if (app.get('env') === 'production') { 

    // changes it to use the optimized version for production 
    app.use(express.static(path.join(__dirname, '/dist'))); 

    // production error handler 
    // no stacktraces leaked to user 
    app.use(function(err, req, res, next) { 
     res.status(err.status || 500); 
     res.render('error', { 
      message: err.message, 
      error: {} 
     }); 
    }); 
} 


/** 
* Routes 
*/ 
app.use('/getusers', getusers); 
app.use('/test', test); 



module.exports = app; 
+0

エラーハンドラミドルウェアは、他のルートが登録される前に最後に来るはずです。 'Routes'を上に移動してください。 'NODE_ENV = development'環境を指定すると、開発中でさえ404エラーが発生するでしょう。 – zeronone

+0

私はあなたのルートから/ getusersを見ることができました。** signup **が呼び出されました。しかし、サインアップは変数として宣言されていません。 'app.use( '/ getusers'、getusers);' どうすればローカルで実行できますか? –

+0

こんにちはShriram、それはタイプミスでした。この例ではこれを追加しましたが、実際にはコード内で正しいです。 – cnak2

答えて

0

Zerononeは右彼のポストにありました。これで修正されました。

他のルートが登録される前にエラーハンドラミドルウェアが最後に来るはずです。ルートを上に移動します。私はあなたがNODE_ENV =開発環境を指定すると、開発中でさえ404エラーを受け取ると思います。 - zeronone Jun 25 at 7:39

関連する問題