@matios
Technical Team Lead

Как использовать модуль FS внутри приложения Electron.Atom\WebPack?

Всем привет. Есть задача открыть файл через input[type=file] считать из него данные и записать в него новые.
Первая часть решается просто, используя HTML5 File Api. А вот записать в него новые данные - уже проблемно.

Используется webpack + react + redux. Когда все это билдится, то результат оборачивается с помощью electron.atom, чтобы получилось десктопное приложение.

Чтобы решить проблему, я попытался использовать fs.writeFile, но тут меня поджидали неудачи:

Первый камень оказался таким:
Cannot resolve module 'fs'
Пробовал решить такими образами:
target: "node",
---
node: {
        global: true,
        fs: "empty",
}
---
resolve: {
    root: path.join(__dirname),
    fallback: path.join(__dirname, 'node_modules'),
    modulesDirectories: ['node_modules'],
    extensions: ['', '.json', '.js', '.jsx', '.scss', '.png', '.jpg', '.jpeg', '.gif']
},


В итоге после N-ой попытки, вариант с node: {fs: "empty"} помог.

Но радость была не долгой, поскольку тут же появился второй камень:
Q2KVq7Xu98kyLm.jpg
Это я вывел в консоль:
//В реактовском методе componentDidMount 
console.log('fs', fs);
console.log('typeOf', typeof fs.writeFile);

//При клике на кнопку
console.log(fs);
console.log(typeof fs.writeFile);


Как видно, fs оказался пустым объектом, и метод writeFile соответственно undefined.

Если все сбилдить таким образом, и обернуть в electron, то объект fs так же пуст. И получается, что с файлами работать не получится.

Самое интересное, что если конфиг вебпака сделать таким:
const path = require('path');
const fs = require('fs');
const webpack = require("webpack");
console.log(fs);


то fs выглядит как надо и не является пустым.

Как бы решить эту проблему? Есть идеи?
  • Вопрос задан
  • 3915 просмотров
Решения вопроса 1
maxfarseer
@maxfarseer
https://maxpfrontend.ru, обучаю реакту и компании
Попробуйте посмотреть этот вопрос. (к сожалению, на англ.)
p.s. в комментариях решили проблему, поэтому читайте последний.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы