我正在编写一个将在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
...