node.js - 在 Heroku 上构建 Angular 4 应用程序时,不包括 Assets

标签 node.js angular heroku angular-cli heroku-cli

我在服务器端使用 Node + Express 并在客户端使用 Angular 4 创建了一个 Web 应用程序。

我可以使用 angular-cli (ng build --aot -prod) 在本地构建此应用程序,并且一切正常:使用所有 css/jss 包、index.html、favicon.ico 创建一个 dist 文件夹,并且 将 asset 文件夹复制到此 dist 文件夹中

现在,我尝试使用 git Push 在 Heroku 上托管此应用程序,并使用 package.json 上的 NPM 安装后脚本直接在 Heroku 上构建它:

...
  "scripts": {
    ...
    "postinstall": "ng build --aot -prod"
  },
...

一切似乎都工作正常,构建过程成功,但问题是 Assets 文件夹没有复制到 dist 文件夹中,因此我的应用程序没有可用的 Assets (这意味着我的应用程序上没有提供/显示任何图像)。

我正在使用的文件夹结构:

node_modules
server
dist    // created on build process
src
-- app
-- assets
-- favicon.ico
-- index.html
-- styles.css
server.js
.angular-cli.json
package.json
package-lock.json

最佳答案

经过一段时间的努力,我终于解决了这个问题,所以我将其发布在这里,以便它可以帮助别人。

这是一个愚蠢的错误,花了很长时间才弄清楚。

问题是,自开发开始以来,我已经从我的主 git 存储库(使用 .gitignore 文件)中删除了图像,因为我移入和移出了大量 Assets ,并且不想在 git 上跟踪它们。

这样,当使用 git 将文件推送到 heroku 时,这些文件不会被复制,因为没有包含在存储库中。虽然那里有一个 Assets 文件夹,但它是空的。

所以,我刚刚将图像包含在存储库中(从 .gitignore 中删除了规则),现在一切正常。

关于node.js - 在 Heroku 上构建 Angular 4 应用程序时,不包括 Assets ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47479457/

相关文章:

javascript - 在 Angular 或 Node 中创建报告?生成 HTML 客户端还是服务器端?

javascript - 如何使用不同的@Injectable进行开发和生产

css - 字体文件不在 angular2 中呈现

angular - 捕获异常后不在开发控制台中显示 500 错误

python - 在 Heroku 上找不到 parse_rest 模块,但在 localhost 上工作

javascript - 无法读取 ExternalModuleFactoryPlugin.js :30 处未定义的属性 'tapAsync'

node.js - aws - 将字符串作为文件上传到 S3 存储桶

javascript - Heroku 上的 Meteor 应用程序 sockjs 连接已关闭

heroku - 使用带有 Heroku 和 CNAME 的电子邮件

javascript - 如何在 fs.existsSync 或 statSync 或 readFileSync 内部使用通配符