Существует много уничтожающих функций в Lisp, но макросы являются тем, который я люблю particularily, потому что нет действительно барьера больше между тем, что определяет язык и что я определяю. Например, язык Common LISP не имеет в то время как конструкция. Я когда-то реализовал его в голове при обходе. Это просто и чисто:
(defmacro while (condition &body body)
`(if ,condition
(progn
,@body
(do nil ((not ,condition))
,@body))))
И voilГ! Вы просто расширили язык языка Common LISP с помощью новой фундаментальной конструкции. Можно теперь сделать:
(let ((foo 5))
(while (not (zerop (decf foo)))
(format t "still not zero: ~a~%" foo)))
, Который распечатал бы:
still not zero: 4
still not zero: 3
still not zero: 2
still not zero: 1
Выполнение этого на любом языке не-Lisp оставляют как осуществление для читателя...
Эти ответы, здесь говоря использующий полный путь все вызовут основные проблемы для того, чтобы запустить большее приложение узла!
Реальное Полное решение
Задания Крона Редактирования
crontab -e
Находят Путь Узла
which node
CD в папку назначения, затем Сменяют Работу Крона согласно Пути Узла и выполняют сценарий
*/2 * * * * cd /home/destination/path && /bin/node index.js
, Это затем позволит Вам запускать полное приложение NodeJS без всех ошибок как как с помощью полного пути для index.js файла.
Можно также указать пути к двоичным файлам сверху пользователя crontab как:
PATH=/bin:/usr/bin:/usr/local/bin
* * * * * cd your/path && node foo.js
* * * * * cd your/path && npm run bar