27

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

#!/usr/bin/env node
node /var/node/assets/js/update.js

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

/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

bash 是否真的有问题,或者节点是否有特定的方式来做到这一点?我使用 /bin/env 以便无论版本如何,我都可以拥有正确形式的“节点”。

4

3 回答 3

56

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

我会让 shebang 行指定 bash 而不是节点。

顶线

#!/usr/bin/env node

意味着接下来应该是 JavaScript 代码,而不是 bash。

于 2013-05-12T16:59:06.210 回答
15

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

然后在第二行node /var/node/assets/js/update.js向该节点进程提供命令。

这个怎么样:

#!/usr/bin/bash
node /var/node/assets/js/update.js
于 2013-05-12T17:11:05.710 回答
-5

这个怎么样?

#!/bin/bash

node /var/node/assets/js/update.js
于 2014-01-31T22:00:02.323 回答