【问题标题】:How to load angular 2 files within express sub-app如何在 express 子应用程序中加载 angular 2 文件
【发布时间】:2016-11-03 08:04:54
【问题描述】:

我有一个使用 express 的节点应用程序。我使用 express-generator 生成默认的 express 设置。

我创建了两个子应用程序,我将它们称为“ang”和“admin”(也使用 express-generator)。这些子应用程序包含在另一个我称之为“主机”的快速应用程序中。

“Ang”- 处理 angular2 应用程序及其各自的 api(使用 express 制作的 api)

“管理员”- 这允许网站所有者向 api 接口的数据库添加新内容。

这在我的本地开发环境中运行良好,但是当我将它推送到 Heroku 时,某些模块没有被安装(即“管理”应用缺少特定于它的模块)并且构建失败。

从 sub-apps package.jsons(来自 express 子应用以及 ang2 package.json)复制相关依赖项后,我能够运行网站的管理部分,但无法运行“ang”因为它在搜索 node_modules 时会遇到 404 错误。

“宿主 app.js”

/*required modules*/
var app = express();

/*Boths paths reference different sub apps*/
var ang = require('./path/to/app.js');
var admin = require('./path/to/app.js');

/*Routes each app uses*/
app.use('/base', admin);
app.use('/', ang);

module.exports = app;

如何路由到“主机”应用程序中包含的节点模块?

【问题讨论】:

    标签: node.js express angular heroku deployment


    【解决方案1】:

    所以在从我的本地主机中删除 node_modules 并尝试构建它之后,我明白了为什么我无法通过更改我的 ang2 应用程序的 index.html 中的路径来找到包。

    我的 angular2 应用程序包含在一个静态目录中。因此,我需要利用节点包管理器 (npm) 的强大功能。所以我改变了我的“主机”应用程序的 package.json。我从以下位置更改了“脚本”字段:

    "scripts": {
      "start": "node ./bin/www"
    }
    

    "scripts": {
      "start": "node ./bin/www",
      "postinstall": " cd /path/from/host/to/ang/client_directory && npm install"
    },
    

    在安装主机应用程序包.json 后运行“postinstall”命令。请参阅npm's scripts documentation 了解更多信息。这将cd 进入目录,然后从那里运行 npm install ,它将找到 angular2 package.json。

    另外:如果您只是正确设置安装后字段,我不确定是否有必要从其他 package.json 文件中移动所有依赖项。

    希望这可以为您节省一些麻烦!

    【讨论】:

      猜你喜欢
      • 2016-12-19
      • 2017-03-26
      • 1970-01-01
      • 2016-10-21
      • 1970-01-01
      • 1970-01-01
      • 2023-03-05
      • 2018-11-12
      • 2017-09-01
      相关资源
      最近更新 更多