我有一个VPS(ubuntu 14.04)和一个带有multer的nodejs应用程序用于处理程序文件上传,当我通过节点ex启动服务器时它可以找到。" node my-server.js&#34 ;
但是如果我是通过upstart ex。" sudo start node-app" node-app是一个ubuntu upstart conf文件,这里是代码
multer我使用快递这里是代码。 我的-server.js
app.use(multer({
dest: './public/images/',
rename: function(fieldname, filename) {
return filename;
}
}));
我的暴发户文件:/etc/init/node-app.conf
description "node.js server"
author "Name"
start on (local-filesystems and net-device-up IFACE=wlan0)
stop on shutdown
# Automatically Respawn:
respawn
respawn limit 99 5
script
export HOME="/home/username/www/site-server/"
exec node $HOME/bin/www 13002 >> /var/log/node.log 2>&1
end script
在我的node.log上我有这个。
{ [Error: Command failed: identify.im6: unable to open image `/home/username/www/my-node-app/public/images/hqdefault.jpg': No such file or directory @ error/blob.c/OpenBlob/2638.
] timedOut: false, killed: false, code: 1, signal: null }
任何想法为什么不通过暴发户工作?
答案 0 :(得分:0)
它需要能够将上传的文件写入磁盘,因此它可能没有写入目标目录的权限。
确保upstart从有权访问您在multer中配置的上传目录的用户帐户运行它。
答案 1 :(得分:0)
好吧@porneL说ubuntu用户需要在磁盘上写入权限,所以我更改了我的upstart文件。
从此。
export HOME="/home/username/www/site-server/"
exec node $HOME/bin/www 13002 >> /var/log/node.log 2>&1
到这个
export HOME="/home/username/www/"
cd $HOME/site-server/
exec node bin/www >> /var/log/node.log 2>&1
Here是我找到答案的地方。