Node.js 当从ubuntu upstart启动时,sqlite3模块无法打开数据库

Node.js 当从ubuntu upstart启动时,sqlite3模块无法打开数据库,node.js,ubuntu,sqlite,upstart,forever,Node.js,Ubuntu,Sqlite,Upstart,Forever,在Ubuntu服务器14.04中工作 我在/etc/init中有一个upstart.conf文件,用于启动节点服务器。我永远在使用。下面是我的脚本的样子 start on filesystem or runlevel [2345] expect fork setuid myUserId env HOME=/home/myUserId/ env NODE_BIN_DIR=/usr/bin env NODE_PATH=/usr/lib/nodejs:/usr/lib/node_modules:/u

在Ubuntu服务器14.04中工作

我在/etc/init中有一个upstart.conf文件,用于启动节点服务器。我永远在使用。下面是我的脚本的样子

start on filesystem or runlevel [2345]
expect fork
setuid myUserId

env HOME=/home/myUserId/
env NODE_BIN_DIR=/usr/bin
env NODE_PATH=/usr/lib/nodejs:/usr/lib/node_modules:/usr/share/javascript

script
PATH=$NODE_BIN_DIR:$NODE_PATH:$PATH
echo $PATH
exec forever start -o /home/myUserId/nodeServ/lServer/logs/out.log /home/myUserId/nodeServ/lServer/server.js 1337
end script
但我总是犯这个错误

Error: SQLITE_CANTOPEN: unable to open database file
error: Forever detected script exited with code: 8
如果我完全按照conf文件中的方式从命令行运行脚本,它就可以正常工作。没问题。所以我认为这是一个权限问题。我已设置了对数据库目录和数据库的读写执行权限,但仍然无法读取该文件

我尝试过很多不同的事情,但我不明白为什么会发生这种情况

更新:此问题似乎与upstart无关。我也试着用shell脚本永远盯着看,但我也犯了同样的错误


我通过变通解决了我的问题。不直接从upstart文件使用forever和start节点(允许重新启动)。没有问题。这可能是sqlite3问题,也可能是永久性问题。

编写此命令
sudo chown www-data

另一个解决方案是检查文件是否存在 例:

var fs = require("fs");

var exists = fs.existsSync(dbfilepath);