Запуск узла из сценария bash

В общем, я пытаюсь автоматизировать запуск скрипта nodejs с помощью cron, однако сам скрипт, похоже, не может запустить файл. Мой скрипт прост:

#!/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, чтобы иметь подходящую форму "узла" независимо от версии.

Ответ 1

Похоже, вы пытаетесь запустить узел изнутри узла. Сообщение об ошибке появилось из узла, и похоже, что узел пытался запустить команду /var/node/assets/js/update.js.

Я бы сделал строку shebang, указывающую bash, а не узел.

Верхняя строка

#!/usr/bin/env node

означает, что следующим должен быть JavaScript-код, а не bash.

Ответ 2

Вы уже используете узел в первой строке в немодифицированной среде.

то во второй строке вы node/var/node/assets/js/update.js командный node/var/node/assets/js/update.js к этому процессу узла.

Как насчет этого:

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

Ответ 3

Как насчет этого?

#!/bin/bash

node /var/node/assets/js/update.js