【问题标题】:How to replace angular-cli server with express?如何用 express 替换 angular-cli 服务器?
【发布时间】:2016-11-02 20:36:43
【问题描述】:

我想用 express 替换 angular-cli 中的内置服务器,以便我可以编辑 express javascript 以添加我需要在服务器上执行的小部件。怎么可能?

【问题讨论】:

  • 我听说 angular-cli 大量使用了 ember-cli。所以搜索'ember-cli replace server with express',找到this。但是 angular-cli 没有实现 api-stub.
  • 您找到解决方案了吗?

标签: angular angular-cli


【解决方案1】:

我在 angular-cli 生成的 src 文件夹中添加了一个 app.js 文件,并编写了一个简单的服务器。当您运行 ng build 时,您添加到 src 和 public 目录的文件将被编译并添加到 dist 目录。所以你应该相对于 dist 中的 index.html 文件渲染/发送:

app.get('/*', function (req, res) {
    res.sendFile(path.join(__dirname,'index.html'))
});

从终端运行快速服务器:$ node dist/app.js

当我尝试嵌套 app.js 文件时遇到一些编译器错误:src/server/app.js,但所有其他服务器文件在嵌套时都可以正常工作,例如模型和路由。

【讨论】:

    【解决方案2】:

    最好的解决方案是用 Ember CLI 所期望的替换它(因此在 Angular CLI 包中实现)。我用我的代理 b/c 我从来没有让 -proxy 选项正常工作。

    首先,确保您已安装 express:

    $ npm install express --save-dev
    

    专门在 /server/index.js 中创建一个快速服务器

    ./server/index.js ->

    var express = require('express');
    module.exports = express();
    

    这很简单。 'ng serve' 处理提供静态文件,因此无需添加您自己的。如果你想添加一些东西,比如你的反向代理,只需在导出之前构建并添加到应用程序中:

    var express = require('express');
    var httpProxy = require('http-proxy');
    var app = express();
    app.all('/api/*', function(req, res) {
      var proxy = httpProxy.createServer('http://localhost:8000');
      req.url = req.url.replace(/^\/api/i, '');
      proxy.web(req, res);
    });
    module.exports = app;
    

    请注意,Ember CLI 确实支持代理,但我没有太多运气使用它来满足我的需要。

    【讨论】:

      猜你喜欢
      • 2019-07-10
      • 2017-08-21
      • 2014-08-11
      • 1970-01-01
      • 2017-11-25
      • 2016-09-06
      • 2017-03-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多