具有Shebang行问题的Heroku Scheduler的Node.js应用程序

时间:2018-05-09 07:54:14

标签: javascript node.js heroku shebang

我正在尝试将一个小型Node.js应用程序部署到Heroku,然后让Heroku Scheduler每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

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

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

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

2 个答案:

答案 0 :(得分:1)

你不应该需要任何" shebang"你的" fetch"文件。 我建议您只需删除#!/usr/local/bin/node行,并将以下内容指定为Heroku Scheduler命令:

node <path_to_fetch.js>

如果您的应用中有one-off dyno,那么应该让heroku调度程序在node.js buildpack中启动您的node.js应用。

使用说明here检查您的应用中是否有node.js buildpack,并在必要时添加。

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

答案 1 :(得分:1)

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