节点scandir权限被拒绝

时间:2017-03-15 12:44:16

标签: node.js

我正在编写一个将在Raspberry PI 3上运行的Node js应用程序。我正在创建一个函数,它将扫描/media/pi文件夹,然后扫描该文件夹中的文件夹以查找config.json < / p>

我有两个这样做的功能:

function findUSBFolders() {
    return fs.readdirSync(mediaFolder);
}

function findConfigFiles(p) {
    ret = [];
    files = fs.readdirSync(p);
    for(var i in files) {
        if(files[i].startsWith('config')) {
            ret.push(path.join(p, files[i])); 
        }
    }
    return ret;
}

在一个树莓上我没有得到任何错误,但另一方面我得到了这个:

fs.js:912
  return binding.readdir(pathModule._makeLong(path), options.encoding);
                 ^

Error: EACCES: permission denied, scandir '/media/pi/D03E-191B'
    at Object.fs.readdirSync (fs.js:912:18)
    at findConfigFiles (/home/pi/seatcontroller/src/waitConfig.js:78:13)
    at findConfigs (/home/pi/seatcontroller/src/waitConfig.js:61:21)
    at Timeout._onTimeout (/home/pi/seatcontroller/src/waitConfig.js:35:15)
    at ontimeout (timers.js:365:14)
    at tryOnTimeout (timers.js:237:5)
    at Timer.listOnTimeout (timers.js:207:5)

这些是/media/pi的权限:

pi@raspberrypi:~ $ ls -l /media/pi
total 4
drwx------ 4 pi pi 4096 Jan  1  1970 D03E-191B

我还尝试使用sudo运行node server.js,但它的行为很奇怪,当我用sudo运行时,它似乎卡住了。

如果您需要更多代码,请与我们联系。

可能是什么问题?

修改

当我sudo node server.js时,我的Chrome浏览器无法启动。在我的代码中,我这样做是为了实现这一点:

server.start((err) => {
    if (err) {
        throw err;
    }
    server.log('info', `Server running at: ${server.info.uri}`);
    chromium.start();
    main.start(require('./src/apiInvoker'), require('./src/qr'));
    unclutter.start();
});

其中chromium是这个模块:

const spawn = require('child_process').spawn;

module.exports = {
    start: function() {
        const chromium = spawn('chromium-browser', ['--kiosk', 'http://localhost:3003']);
    }
};

我在没有sudo ...

的情况下运行时启动它

0 个答案:

没有答案