これは私を狂ってしまいます。 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;
エラーハンドラミドルウェアは、他のルートが登録される前に最後に来るはずです。 'Routes'を上に移動してください。 'NODE_ENV = development'環境を指定すると、開発中でさえ404エラーが発生するでしょう。 – zeronone
私はあなたのルートから/ getusersを見ることができました。** signup **が呼び出されました。しかし、サインアップは変数として宣言されていません。 'app.use( '/ getusers'、getusers);' どうすればローカルで実行できますか? –
こんにちはShriram、それはタイプミスでした。この例ではこれを追加しましたが、実際にはコード内で正しいです。 – cnak2