【问题标题】:Staticfile deployment fails with [ERR] bash: node: command not found静态文件部署失败并出现 [ERR] bash: node: command not found
【发布时间】:2021-06-11 16:29:27
【问题描述】:

规格:

  • Angular CLI:8.3.29
  • 节点:12.22.1
  • 操作系统:linux x64
  • 角度:8.2.14

清单文件:

---
applications:
- name: test-app-ui
  memory: 2G
  path: dist
  buildpacks:
    - staticfile_buildpack 
  instances: 1

我通过运行ng build 创建了dist 目录。然后推送到 CF 并在应用程序日志中,我得到了这个错误:

[ERR] bash: node: command not found

我认为 CF 应该使用 NGINX 在dist 目录中提供这些静态文件,而不是运行寻找node 服务器?

在应用设置页面中,我看到了这个:

Buildpack:静态文件 v1.5.15

启动命令:node main.js

堆栈:cflinuxfs3(基于 Cloud Foundry Linux 的文件系统 - Ubuntu 仿生 18.04 LTS)

看来node 是启动应用程序所必需的,但为什么此构建包中没有开箱即用的node

【问题讨论】:

  • 这与我所拥有的非常接近,例如github.com/textbook/salary-stats,工作正常 - Staticfile buildpack 确实使用 NGINX,不需要构建任何东西。 cf buildpacks 告诉你什么?
  • @jonrsharpe - 我刚刚进入设置并注意到启动命令是这样的:Start Command: node main.js 所以我猜这就是这个 buildpack 启动应用程序的方式。为什么这个 buildpack 里面没有node,我不知道...
  • 我在哪里部署了上述应用程序,我看到 staticfile v1.5.15Start Command: $HOME/boot.sh,这是该 buildpack 的正确启动命令。我不确定您要部署到哪里,但它看起来配置不正确。您是否曾经通过manifest fileCLI 为该应用设置过非默认启动命令?
  • @jonrsharpe 实际上没有设置任何命令。
  • @jonrsharpe 谢谢!设置您提到的命令后,它现在可以工作了!你真是个天才!告诉我你在哪里,我有一天会买一杯咖啡。不开玩笑,伙计……

标签: node.js nginx cloud-foundry


【解决方案1】:
Start Command: node main.js

对于根本不包含 Node 的 Staticfile buildpack 是不正确的;默认和正确的值(参见例如the repo)是:

Start Command: $HOME/boot.sh

很可能在某些时候有人通过cf push -c ... 或清单文件中的command: 覆盖了它。您可以使用in the docs 所示的任一方法重置回 buildpack 默认值:

  • cf push -c null ...;或
  • command: null 在清单中。

如果这不起作用,并且实际的 buildpack 默认不正确,您需要与您的管理员联系以修复该问题(可能您在组织内使用自定义 buildpack),同时您可以明确设置$HOME/boot.sh 使用上述任一方法。

【讨论】:

    猜你喜欢
    • 2022-01-26
    • 1970-01-01
    • 2022-12-10
    • 2011-02-12
    • 2019-07-07
    • 1970-01-01
    • 1970-01-01
    • 2020-09-16
    • 2019-07-01
    相关资源
    最近更新 更多