Всем привет. Есть задача открыть файл через 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"} помог.
Но радость была не долгой, поскольку тут же появился второй камень:
Это я вывел в консоль:
//В реактовском методе 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 выглядит как надо и не является пустым.
Как бы решить эту проблему? Есть идеи?