zhs[@ubuntu](/user/ubuntu):~/Desktop/node-v0.10.26$ pm2 -V
0.7.8
zhs[@ubuntu](/user/ubuntu):~/Desktop/node-v0.10.26$ pm2 start
/usr/local/lib/node_modules/pm2/bin/pm2:383
fs.exists(cst.DEFAULT_FILE_PATH, function(exist) {
^
TypeError: Object #<Object> has no method 'exists'
at init (/usr/local/lib/node_modules/pm2/bin/pm2:383:6)
at Object.<anonymous> (/usr/local/lib/node_modules/pm2/bin/pm2:403:3)
at Module._compile (module.js:446:26)
at Object..js (module.js:464:10)
at Module.load (module.js:353:32)
at Function._load (module.js:311:12)
at Array.0 (module.js:484:10)
at EventEmitter._tickCallback (node.js:190:39)
楼主的代码没标记, 我给标记了... Markdown 啊...
提示错误的 exists 方法不存在, 两种可能,
1, 低版本的 Node 没有这个方法... 看上边可能是 0.10 , 应该不会啊
2, 要么是 fs 对象被什么覆盖了, 检查下对象是不是对的?
另外 pm2 start 不是应该加参数再跑的么?
pm2 0.7.8 源码也就是这里: https://github.com/Unitech/pm2/blob/0.7.8/bin/pm2#L383
对应楼主的这里 /usr/local/lib/node_modules/pm2/bin/pm2:383
打开文件, 在这一行之前插入下面的代码看看结果怎么样吧:
console.log(Object.keys(fs), process.version)
[ ‘Stats’, ‘readFile’, ‘readFileSync’, ‘close’, ‘closeSync’, ‘open’, ‘openSync’, ‘read’, ‘readSync’, ‘write’, ‘writeSync’, ‘rename’, ‘renameSync’, ‘truncate’, ‘truncateSync’, ‘rmdir’, ‘rmdirSync’, ‘fdatasync’, ‘fdatasyncSync’, ‘fsync’, ‘fsyncSync’, ‘mkdir’, ‘mkdirSync’, ‘sendfile’, ‘sendfileSync’, ‘readdir’, ‘readdirSync’, ‘fstat’, ‘lstat’, ‘stat’, ‘fstatSync’, ‘lstatSync’, ‘statSync’, ‘readlink’, ‘readlinkSync’, ‘symlink’, ‘symlinkSync’, ‘link’, ‘linkSync’, ‘unlink’, ‘unlinkSync’, ‘fchmod’, ‘fchmodSync’, ‘chmod’, ‘chmodSync’, ‘fchown’, ‘fchownSync’, ‘chown’, ‘chownSync’, ’_toUnixTimestamp’, ‘utimes’, ‘utimesSync’, ‘futimes’, ‘futimesSync’, ‘writeFile’, ‘writeFileSync’, ‘watch’, ‘watchFile’, ‘unwatchFile’, ‘realpathSync’, ‘realpath’, ‘createReadStream’, ‘ReadStream’, ‘FileReadStream’, ‘createWriteStream’, ‘WriteStream’, ‘FileWriteStream’, ‘SyncWriteStream’ ] ‘v0.6.19’
ubuntu server会有这个问题,解决的方式是这样的,你先用npm install pm2在当前文件夹中,然后将这个文件夹移动到全局的文件夹里面,然后修改文件夹的权限就可以了。
@zhs077 不知道怎么回事... Node 命令行里的 process.version 显示是多少?
这个调用很奇怪啊... 有没有可能实际上你装了两个 Node,
然后因为不同调用者, Bash 中的环境变量不一样, 结果调用了不同的 node 命令