Почему fs.writeFileSync() выдает ошибку «не является функцией»?

#javascript #function #file #fs

#javascript #функция #файл #fs

Вопрос:

Я пытаюсь сохранить некоторые данные в файле с помощью fs.writeFileSync, но это не работает, и я не могу понять почему. Он выдает следующую ошибку: Unhandled Rejection (TypeError): fs.writeFileSync is not a function

В моем приложении я использую его следующим образом :

 const fs = require('fs');
const stateFile = "./usersStateFile";

const saveLastEventSequenceId = (sequenceId) => {
    try {
            fs.writeFileSync(stateFile, sequenceId);
        } catch (err) {
          throw err;
        }
     };
 

Это sequenceId число, и ./usersStateFile оно не существует, но fs.writeFileSync() должно создать его, если оно не существует.

В чем может быть проблема?

Комментарии:

1. Сделали ли вы require / import fs модуль? Если это так, пожалуйста, добавьте инструкцию import в фрагмент кода.

2. этот javascript, который вы написали, должен запускаться в браузере? если да, то я не думаю, что это сработает

3. Вы запускаете код в nodejs или используете какой-либо инструмент упаковки, такой как webpack или rollup? Или вы запускаете это в браузере? Потому что браузер не имеет ни требования, ни доступа к fs. Вы можете попробовать сделать console.log(fs) и опубликовать результат.

4. Я запускаю его в своем браузере с помощью yarn run dev. Тогда как мне это сделать, чтобы заставить его работать?

5. Это никогда, никогда не будет запущено в браузере.

Ответ №1:

Импортируйте fs модуль следующим образом:

 const fs = require('fs'); // or `import * as fs from 'fs'` if you're using ES2015 
const stateFile = "./usersStateFile";

const saveLastEventSequenceId = (sequenceId) => {
  try {
    fs.writeFileSync(stateFile, sequenceId);
  } catch (err) {
    throw err;
  }
};
 

Вы вызывали fs.writeFileSync() , не имея имени переменной fs , определенной в вашей области видимости. В этом случае fs вычисляется значение undefined , которое вызвало ошибку при попытке вызвать его существующий член функции.

Комментарии:

1. Я определил fs таким образом, но я все равно получаю ошибку

2. @RobertBogos вы используете NodeJS?

3. Я запускаю это в браузере с помощью yarn run dev

4. @RobertBogos Модуль fs недоступен в браузере. Это относится к узлу и будет работать только в узле. Браузер по соображениям безопасности имеет очень ограниченный доступ к вашей файловой системе … в противном случае вы могли бы посетить любой случайный веб-сайт, и они могли бы читать и записывать все файлы на вашем компьютере, включая файлы с закрытыми ключами, пароли и т. Д.