Node.js Heroku 调度程序的应用程序存在 Shebang 线路问题



我正在尝试将一个小的 Node.js 应用程序部署到 Heroku,然后让 Heroku 调度程序每 10 分钟运行一次应用程序。我们的客户前供应商构建此应用程序也将其托管在 Heroku 上,因此无需更改我收到的源代码中的任何内容。尽管如此,我从 Heroku 日志中收到以下错误。

2018-05-09T07:26:07.710882+00:00 app[api]: Starting process with command `fetch` by user scheduler@addons.heroku.com
2018-05-09T07:26:11.124833+00:00 heroku[scheduler.2653]: Starting process with command `fetch`
2018-05-09T07:26:11.718182+00:00 heroku[scheduler.2653]: State changed from starting to up
2018-05-09T07:26:13.647479+00:00 heroku[scheduler.2653]: State changed from up to complete
2018-05-09T07:26:13.629258+00:00 heroku[scheduler.2653]: Process exited with status 126
2018-05-09T07:26:13.542885+00:00 app[scheduler.2653]: bash: /app/bin/fetch: /usr/local/bin/node: bad interpreter: No such file or directory

显然,运行我的index.js文件的fetch文件中的"Shebang"行存在问题:

#!/usr/local/bin/node
var path = require('path');
require(path.join(__dirname, '../index')).start();

我对 Node.js 和 Javascript 相当陌生,所以我不确定我是否完全理解"Shebang"系列的目的。但我猜它指向错误的位置或类似的东西?我如何弄清楚,在这一行中要更改什么?

Shebang 行告诉使用哪个解释器来运行文件。您收到的错误告知节点未安装在 shebang 指向的位置。使用#!/usr/bin/env node通常有效。

在"fetch"文件中不需要任何"shebang"行。 我建议您简单地删除#!/usr/local/bin/node行,并指定以下内容作为您的 Heroku 调度程序命令:

node <path_to_fetch.js>

这应该让 heroku 调度程序在一次性测功机中启动您的节点.js应用程序,前提是您的应用程序中有一个节点.js构建包。

使用此处的说明检查应用中是否有节点.js构建包,并在必要时添加它。

也就是说,如果您真的想使用"shebang"运行您的应用程序,请将其更改为#!/usr/bin/env node.在这种情况下,请省略 Heroku 调度程序命令中的单词node

相关内容

最新更新