从bash脚本运行节点

Rog*_*gue 20 bash shell node.js

很简单,我正在尝试使用cron自动运行nodejs脚本,但是脚本本身似乎无法运行该文件.我的脚本很简单:

#!/usr/bin/env node
node /var/node/assets/js/update.js
Run Code Online (Sandbox Code Playgroud)

但是,在运行它时,它返回路径的开头不正确:

/home/dev/update.sh:2
node /var/node/assets/js/update.js
      ^^^
SyntaxError: Unexpected token var
    at Module._compile (module.js:439:25)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)
    at node.js:901:3
Run Code Online (Sandbox Code Playgroud)

bash是否存在实际问题,或者节点是否有特定的方法来执行此操作?我使用/ bin/env这样我可以拥有适当形式的"节点",无论版本如何.

Ray*_*oal 44

看起来您正在尝试从节点内运行节点.错误消息来自节点,看起来节点正在尝试运行该命令/var/node/assets/js/update.js.

我会让shebang行指定bash而不是node.

顶线

#!/usr/bin/env node
Run Code Online (Sandbox Code Playgroud)

意味着以下内容应该是JavaScript代码,而不是bash.


sta*_*low 12

您已在未修改环境中的第一行上运行节点.

然后在第二行,您将命令提供node /var/node/assets/js/update.js给该节点进程.

这个怎么样:

#!/usr/bin/bash
node /var/node/assets/js/update.js
Run Code Online (Sandbox Code Playgroud)