angularjs - 当我将带有 ExpressJs API 的 NodeJs 发布到服务器时,它得到 404

标签 angularjs node.js express web-deployment

这让我发疯。我使用 NodeJs、ExpressJs 和 Angular 创建了一个应用程序。我有一个客户端文件夹,它是 Angular 驱动的,还有一个服务器文件夹,其中有我的 ExpressJs REST Api。

在我的本地系统上,它使用 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;

最佳答案

Zeronone 的观点是正确的。这解决了它。

您的错误处理程序中间件应该在注册任何其他路由之前最后出现。将路线移至上方。我猜如果你指定 NODE_ENV=开发环境,即使在开发中你也会得到 404 错误。 – Zeronone 6 月 25 日 7:39

关于angularjs - 当我将带有 ExpressJs API 的 NodeJs 发布到服务器时,它得到 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38025951/

相关文章:

node.js - Nginx、Node、Angular - 子文件夹 API/URL 配置

javascript - 使用 Angular JS 从数据选择器获取数据

javascript - Angular 中没有主题标签的刷新页面不起作用

node.js - Express 4.0 中合并路线

javascript - Node http-proxy 不在代理后面工作

带有 Redis 的 Node.js - 排序集加法

javascript - 使用 Express 运行 io.js

mysql - 无法让passportjs使用express和mysql验证本地策略

angularjs - 通过 Node.js 而不是像 Xampp 这样的服务器来运行 AngularJS Web 应用程序的实际优势是什么?

javascript - 在express js中的get请求中使用switch返回错误为什么?