节点应用程序获取“错误:EACCES:权限被拒绝,mkdir'.tmp'

时间:2016-04-05 19:31:19

标签: node.js raspberry-pi raspbian node-red

我正在我的覆盆子pi上运行node-red并且正在尝试获取我自己编写的节点。该节点在我的Windows PC上工作正常,但我还没能让它在我的pi上工作。

我的节点使用mailin来设置SMTP服务器,但我认为这不是该软件包的问题。

mailin正在尝试创建一个临时文件夹,但它显然没有权限。如何为节点提供创建此文件夹所需的权限?

完整错误:

5 Apr 20:06:22 - [info] Starting flows
shell.js: internal error
Error: EACCES: permission denied, mkdir '.tmp'
at Error (native)
at Object.fs.mkdirSync (fs.js:794:18)
at mkdirSyncRecursive (/home/pi/.node-red/node_modules/node-red-contrib-mailin-smtp/node_modules/mailin/node_modules/shelljs/src/mkdir.js:11:8)
at /home/pi/.node-red/node_modules/node-red-contrib-mailin-smtp/node_modules/mailin/node_modules/shelljs/src/mkdir.js:63:7
at Array.forEach (native)
at Object._mkdir (/home/pi/.node-red/node_modules/node-red-contrib-mailin-smtp/node_modules/mailin/node_modules/shelljs/src/mkdir.js:48:8)
at Object.mkdir (/home/pi/.node-red/node_modules/node-red-contrib-mailin-smtp/node_modules/mailin/node_modules/shelljs/src/common.js:186:23)
at Mailin.start (/home/pi/.node-red/node_modules/node-red-contrib-mailin-smtp/node_modules/mailin/lib/mailin.js:73:15)
at new MailinSMTP (/home/pi/.node-red/node_modules/node-red-contrib-mailin-smtp/mailinSMTP.js:15:10)
at createNode (/usr/lib/node_modules/node-red/red/runtime/nodes/flows/Flow.js:276:18)
at Flow.start (/usr/lib/node_modules/node-red/red/runtime/nodes/flows/Flow.js:64:35)
at start (/usr/lib/node_modules/node-red/red/runtime/nodes/flows/index.js:264:29)
at tryCatchReject (/usr/lib/node_modules/node-red/node_modules/when/lib/makePromise.js:845:30)
at runContinuation1 (/usr/lib/node_modules/node-red/node_modules/when/lib/makePromise.js:804:4)
at Fulfilled.when (/usr/lib/node_modules/node-red/node_modules/when/lib/makePromise.js:592:4)
at Pending.run (/usr/lib/node_modules/node-red/node_modules/when/lib/makePromise.js:483:13)
nodered.service: main process exited, code=exited, status=1/FAILURE

非常感谢

1 个答案:

答案 0 :(得分:1)

这里的问题是mailin试图在根文件夹中为节点创建一个不允许的临时文件夹。看看mailin的代码,虽然我能够传递一个不同的文件夹用于临时文件。我通过向配置对象添加tmp属性并将其设置为os.tempdir()/mailin

来完成此操作