Почему Browserify не работает с fs.readFileSync?

Когда я запускаю свой код:

var fs = require('fs');
var text = fs.readFileSync('data.txt').toString().split("\n");

function getDataJS(){
    var i = 0;
    var c = "";
    var d = "";
    var t = "";
    var r = "";
    for(i = 0;i<text.length;i++){
        if(i == 0){
            c = text[i];
            document.getElementById('con').innerHTML = c;
        } else if(i == 1){
            d = text[i]
            document.getElementById('dec').innerHTML = d;
        } else if(i == 2){
            t = text[i]
            document.getElementById('tes').innerHTML = t;
        } else if(i == 3){
            r = text[i]
            document.getElementById('rec').innerHTML = r;
        }
    }
}


module.exports = getDataJS();

(с моим html) я получаю:

Uncaught TypeError: fs.readFileSync is not a function

Кто-нибудь знает, почему это так? Я знаю, что node не работает с браузерами, но я не понимаю, почему не работает браузер.


person Daniel Outis    schedule 18.04.2020    source источник
comment
Если вы запускаете этот код в браузере, вы не можете открывать файлы из контекста браузера.   -  person ADyson    schedule 18.04.2020
comment
Привет, Даниэль, в браузере нет всех методов, которые есть в node.js. Наоборот. Попробуйте использовать API файлов   -  person Josh Bradley    schedule 18.04.2020


Ответы (1)


Из Browserify:

В браузерах метод require не определен, но в Node.js он есть. С Browserify вы можете писать код, который использует require так же, как вы использовали бы его в Node.


Browserify позволит вам использовать require. Он не позволяет вам использовать API-интерфейсы, предоставляемые Node.js, которые не предоставляются браузерами… включая те, которые необходимы для чтения файлов с компьютера, на котором выполняется код.

person Quentin    schedule 18.04.2020
comment
Есть ли альтернативный способ сделать то, что я пытаюсь сделать? - person Daniel Outis; 18.04.2020
comment
@DanielOutis — я не знаю, что ты пытаешься сделать. en.wikipedia.org/wiki/XY_problem - person Quentin; 18.04.2020
comment
Я пытаюсь передать оперативные данные на свой веб-сайт, который обновляется каждые 10 минут из файла «data.txt». У меня есть файл python, который очищает данные с веб-сайта, затем заменяет текст в data.txt новыми данными, затем мне нужен файл javascript, чтобы взять эти данные и отобразить их на сайте html. - person Daniel Outis; 18.04.2020
comment
@DanielOutis размещает ли файл на сервере? в этом случае ваш браузер может использовать AJAX для получения содержимого с сервера. - person ADyson; 18.04.2020
comment
Если вы пытаетесь сделать запрос HTTP GET из JavaScript, вам, вероятно, следует задать вопрос об этом (или выполнить поиск, это распространенная проблема). - person Quentin; 18.04.2020
comment
файл действительно помещается на сервер sftp. @ADyson - person Daniel Outis; 18.04.2020
comment
@Квентин, код получения http идет в html или js? - person Daniel Outis; 18.04.2020
comment
@DanielOutis, вы не можете установить FTP или SFTP-соединение из кода на основе браузера. Вы должны иметь доступ к файлу через HTTP или HTTPS. - person ADyson; 18.04.2020
comment
@DanielOutis HTML — это язык визуальной разметки, его нельзя использовать для программирования, поэтому да, код HTTP необходимо будет написать на Javascript. Я предлагаю вам найти учебник, показывающий, как сделать запрос AJAX, используя функциональность fetch(), встроенную во все современные браузеры. - person ADyson; 18.04.2020