2017-03-15 103 views
0

我想在启动时从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'); 

什么想法?

+0

模块是如何安装的?糖是全球安装吗? – akaphenom

+0

全球,很抱歉! sudo npm安装sugar -g – phpmydev

+0

什么是NodeJs的路径 – akaphenom

回答

0

糖(和其他一些模块,一旦我通过糖),是不是在正确的地方。我不知道如何描述他们应该去的地方,但是我把它们放在/ home/pi/node_modules中 - 这有一个窍门,现在cron在重启时运行良好。

相关问题