【问题标题】:angular cli proxy conf not working?角度cli代理配置不起作用?
【发布时间】:2017-06-29 14:54:27
【问题描述】:

我正在使用 Angular CLI (ng4) 并在我的代理配置中声明了我的应用程序之外的其余 api 调用。

在 ng build --prod --aot=true 之后,我得到状态码 404。在开发模式中它正在工作。我该怎么做才能解决这个问题?

我的 app.ts 文件

if (app.get("env") === "development") {

    app.use('/assets', express.static(path.join(__dirname, '../../src/assets')));
    // app.use('/', express.static(path.join(__dirname, '../../src/pages')));

    app.use(function(err, req: express.Request, res: express.Response, next: express.NextFunction) {
        res.status(err.status || 500);
        res.json({
            error: err,
            message: err.message
        });
    });
}

if (app.get('env') === 'production') {
  // in production mode run application from dist folder
  app.use(express.static(path.join(__dirname, '/../client')));
}

【问题讨论】:

    标签: angular


    【解决方案1】:

    如果您使用 ng build 并将构建的文件部署到您的 HTTP 服务器,则代理配置完全无关紧要。

    代理配置可与ng serve 一起使用,以便ng serve 启动的开发服务器充当(通常)针对另一个后端服务器的REST api 请求的代理。

    阅读the documentation

    【讨论】:

    • 我明白了,但我该如何解决?否则我无法调用在外面运行的休息 api。我应该写像localhost:4200/rest/api这样的完整路径吗?而不是 /rest/api
    • 你是如何部署你的 Angular 应用的?您的后端位于何处,为您的前端提供什么服务?
    • 我的 node.js 在端口 3000 上运行,并且在端口 4200 上运行。网络服务器名称是 www.djangoxx:4200。我希望这会有所帮助?
    • 不,它没有。你说你使用了 ng build。 ng build 只是构建应用程序并在 dist 目录中生成其文件。现在您需要启动一个 http 服务器来提供这些文件。你是怎样做的?在端口 4200 上运行什么来提供这些文件?为什么运行在 3000 端口的 node.js 服务器不提供这些文件?
    • Angular CLI 在端口 4200 上运行。Node.js 在端口 3000 上运行,我也通过 localhost:3000 的 proxy-conf 调用它。请在 app.ts 文件中查看我如何在 dev 和 prod 模式中提供这些文件
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-18
    • 1970-01-01
    • 2017-07-09
    • 1970-01-01
    相关资源
    最近更新 更多