使用 ubuntu upstart 启动时,node js multer 文件上传不起作用

node js multer file upload not working when started with ubuntu upstart

我有一个 VPS(ubuntu 14.04) 和一个带有 multer 的 nodejs 应用程序用于处理程序文件上传,当我通过节点 ex 启动服务器时它可以找到。"node my-server.js"

但如果我从 upstart ex."sudo start node-app" 开始 node-app 是一个 ubuntu upstart conf 文件,这里是代码

multer 我用express 这里是代码。 我的-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 }

知道为什么不能通过 upstart 工作吗?

它需要能够将上传的文件写入磁盘,因此它可能没有写入目标目录的权限。

确保 upstart 从有权访问您在 multer 中配置的上传目录的用户帐户运行它。

正如@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 是我找到答案的地方。