Есть ли в Node JavaScript библиотека, которая показывает диалоговое окно проводника (выбора файла)
Нужна библиотека, которая показывает диалоговое окно проводника (выбора файла) на Node JS. То есть, нужно окно выбора файла и когда мы выбрали файл, то в переменную записывается абсолютный путь этого файла.
Ответы (1 шт):
Автор решения: nörbörnën
→ Ссылка
Структура проекта:
Запуск и результат
$ node src/open-file-dialog/index.js
... выбор файлов в диалоге выбора файлов ...
[
'/Users/nörbörnën/Work/apple-wallet/z/manifest.json',
'/Users/nörbörnën/Work/apple-wallet/z/pass.json'
]
index.js
const { spawn } = require('child_process');
const path = require('path');
const electronPath = require('electron');
(async () => {
try {
console.log(await filesSelection());
} catch (err) {
console.error(err);
}
})();
async function filesSelection() {
return new Promise((resolve, reject) => {
const child = spawn(`${electronPath}`, [path.join(__dirname, 'dialog.js')]);
let out = '';
child.stdout.on('data', (data) => out += data);
child.stderr.on('data', reject);
child.on('close', (code) => {
try {
if (code === 0) {
return resolve(JSON.parse(out));
}
reject(new Error(`child process exited with code ${code}`));
} catch (err) {
reject(err);
}
});
});
}
dialog.js
const { app, dialog } = require('electron');
app.on('ready', async () => {
try {
const res = await dialog.showOpenDialog({
properties: ['openFile', 'multiSelections']
});
process.stdout.write(JSON.stringify(res?.filePaths || []));
process.exit(0);
} catch (err) {
console.error(err);
process.exit(1);
}
});
