从cron运行node.js脚本失败,手动工作正常
问题描述:
我想在启动时从cron运行脚本;我见过很多关于路径变量的参考,但没有一个帮助我的情况。运行时,从cron运行node.js脚本失败,手动工作正常
#!/bin/bash
cd /home/pi/Public/abc/
source $HOME/.profile
NODE_PATH=/usr/lib/nodejs:/usr/lib/node_modules:/usr/share/javascript
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games
sleep 2
nodemon app.js </dev/null>/home/pi/startup.log 2>/home/pi/startup.err &
请注意,我用相对和绝对路径的每个组合
以下是错误日志(:
这个cron:
@reboot /home/pi/nodestart.sh
这里是脚本来自cron):
[email protected]:~ $ cat startup.err
module.js:471
throw err;
^
Error: Cannot find module 'sugar'
at Function.Module._resolveFilename (module.js:469:15)
at Function.Module._load (module.js:417:25)
at Module.require (module.js:497:17)
at require (internal/module.js:20:19)
at Object.<anonymous> (/home/pi/Public/abc/logutil.js:3:17)
at Module._compile (module.js:570:32)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
at Function.Module._load (module.js:438:3)
似乎找到如下图所示其他模块:
//app.js
var express = require('express');
var logger = require('tracer').colorConsole();
var fs = require('fs');
var multer = require('multer');
var app = express();
var async = require('async');
var bodyParser = require('body-parser');
var ejs = require('ejs');
const clientSessions = require("client-sessions");
var db = require('./dbutil');
var log = require('./logutil');
var passThru = require('stream').PassThrough;
var Sugar = require('sugar');
什么想法?
答
糖(和其他一些模块,一旦我通过糖),是不是在正确的地方。我不知道如何描述他们应该去的地方,但是我把它们放在/ home/pi/node_modules中 - 这有一个窍门,现在cron在重启时运行良好。
模块是如何安装的?糖是全球安装吗? – akaphenom
全球,很抱歉! sudo npm安装sugar -g – phpmydev
什么是NodeJs的路径 – akaphenom