如果我在包含目录中运行我的node.js脚本,它运行正常。如果我使用
从crontab运行它*/1 * * * * /usr/local/bin/node /Users/full/path/to/main >> ~/mtf.log
我看到与twilio配置相关的错误
var TWClient = require('twilio')(configTwilio.accountSid, configTwilio.
^
TypeError: Cannot read property 'accountSid' of undefined
为什么从cron运行时这不起作用?在服务器(ubuntu)和localhost(OSX 10.8.5)上发生相同的行为
脚本顶部(main.js)
var phantom = require('phantom');
var portscanner = require('portscanner');
var FeedParser = require('feedparser'),
request = require('request');
var configDB = require('config').DB;
var configTwilio = require('config').Twilio;
var mysql = require('mysql');
var TWClient = require('twilio')(configTwilio.accountSid, configTwilio.authToken);
配置文件default.yaml位于相对于main.js的config目录中并包含(编辑):
DB:
dbHost: localhost
dbPort: 3306
dbName: xxx
dbUser: xxx
dbPass: xxx
Twilio:
accountSid: AC8fxxxxxxxxd5f7aace47a8
authToken: d863b4ddfxxxxxx9b7c845
我也在当地试过这个:
env -i sh -c 'cd /path/to/script && /usr/local/bin/node main'
但得到:
events.js:72
throw er; // Unhandled 'error' event
^
Error: spawn ENOENT
答案 0 :(得分:0)
答案 1 :(得分:0)
安排cron任务时,节点js不会在本地目录中标识config json文件。在main.js文件中添加以下代码以更改节点配置目录。
process.env.NODE_CONFIG_DIR= __dirname +'/config';
var config = require('config');