2016-11-23 13 views
0

мне нужно запустить скрипт ш send.sh, как содержание показано ниже:Крон запустить Nodejs Не работает

node send.js -q 8435924032 >> send.log 

Если я запускаю его с кронтаб, как */2 * * * * /home/app/send.sh ничего не outputed.

И есть почта, которая показывает ошибку брошенную процесса хрон:

ReferenceError: Promise is not defined 
    at requestURL (/home/app/getData.js:34:16) 
    at Object.getData (/home/app/getData.js:15:18) 
    at /home/app/send.js:173:41 
    ... 

Однако это дает мне правильный вывод и NO ERROR, когда я непосредственно запустить sh send.sh

Может кто-то помогает? Я хочу запускать программу каждые две минуты. Я попробовал PM2, но такая функция cron не работает.

ответ

1

Вы проверили версию root root.js пользователя?

Crontab запускает сценарий оболочки как root по умолчанию, это означает, что он использует root user node.js вместо версии узла, которую вы используете для запуска скрипта.

Обещание не поддерживается в старой версии node.js.

Если у вас есть корневая привилегия, вы можете проверить корневую пользователя node.js версии по,

$sudo su 
$node -v 

или, в вашем Node.js скрипте

console.log(process.versions); //which contains running node version 
+0

Не могли бы вы показать мне, как проверить версию пользовательского корневого узла? – user3711105

+0

если у вас есть привилегия root, попробуйте это. – iKoala

+0

@@, что волшебство, 'node -v' дает мне' v6.6.0'. Но 'sudo su node -v' дает мне' v0.10.42' – user3711105

0

сделать некоторые изменения в вашу оболочку файл:

Использование Абсолютный путь к файлу

node /<path>/<to>/<file>/send.js -q 8435924032 >> send.log 

Или перейдите в каталог

cd /<path>/<to>/<file>/; 
node ./send.js -q 8435924032 >> send.log 

 Смежные вопросы

  • Нет связанных вопросов^_^