-------------------------------------------------
Ответ, который сработал для меня:
ИЗМЕНЕНО (оставляю памятку, для тех кто тоже столкнулся с такое проблемой):
Я нашел ответ, все не работало из-за __dirname, из-за webpack, он выдавал мне просто / :
console.log(__dirname); // выдавал мне / ( / - это символ слеш если что)
Нужно было в webpack.conf.js написать:
node: {
__dirname: true
}
Вообще, лучше (если вы используете nodeJS) поставить свойство global: true (а также __filename): - оно сделает все функции nodejs валидными, или другими словами, не будет мешать nodejs делать свою работу:
node: {
global: true,
__dirname: true,
__filename: true
}
Подробнее о node свойстве в webpack.conf.js тут: https://webpack.js.org/configuration/node/
После чего, я попробовал вывести __dirname:
console.log(__dirname); // выдает src/assets/js/app.js
Вот работающий readFileSync:
let fileData = fs.readFileSync(__dirname + "/text.txt").toString();
console.log(fileData); // выдает: "Привет, soso!"
В общем, сам fs работал, в writeFile, я просто не указал во 2-ом параметре коллбэк обработки ошибки (или 3-ем если вы передаете дополнительный параметр "utf-8") err => if(err) console.log(err);
Пример:
const fs = require("fs");
fs.writeFile("/text2.txt", "Привет", err => { if(err) console.log(err) });
// или
const fs = require("fs");
fs.writeFile("/text2.txt", "Привет", "utf-8", err => { if(err) console.log(err) });
Подробнее (а также это место где я нашел информацию о том, что webpack блокирует __dirname):
https://github.com/webpack/webpack/issues/1599