Обзор с помощью require('fs')

Я пытался использовать browserify для файла, который использует объект fs. Когда я просматриваю его, require('fs') не трансформируется и require возвращается {},

Есть ли обходной путь для этого? Я видел несколько предложений по stackoverlow и в других местах, но ни одно из них не было полностью реализовано.

Я действительно надеялся создать упакованное в Google приложение, используя browserify для класса, который я преподаю.

Заранее спасибо.

5 ответов

Решение

Какую файловую систему должен использовать браузер? Файловая система HTML5 на самом деле не сравнима с традиционной файловой системой. У него нет символьных ссылок, и он доступен только асинхронно вне Web Workers.

Итак, ответ таков: напишите собственный уровень абстракции, который может полагаться на модуль fs при работе в Node.js и API HTML5 FS при запуске в браузере. Различия слишком велики для того, чтобы их можно было перевести.

Если вы хотите встроить содержимое файла из fs.readFileSync() звонки, вы можете использовать brfs:

var fs = require('fs');
var src = fs.readFileSync(__dirname + '/file.txt');

затем сделайте:

browserify -t brfs main.js > bundle.js

а также src будет установлен на содержание file.txt во время компиляции.

Если вы хотите запустить файловую систему с browserify, вы можете установить npm.

npm install browserify-fs 

и вы можете получить доступ к объекту fs на стороне клиента.
Спасибо

Если вам необходимо использовать require (fs), вы всегда можете использовать html5 file reader api для чтения файлов в javascript.

window.onload = function() {
    var fileInput1 = document.getElementById('fileInput');
    if (fileInput1){
        fileInput1.addEventListener('change', function(e) {
            var file = fileInput1.files[0];
            var textType = /text.*/;

            if (file.type.match(textType)) {
                var reader = new FileReader();
                reader.onload = function(e) {
                    console.log(reader.result);
                  }    
                reader.readAsText(file);                    
            } 
        });
    }
}

Вам также нужно будет вставить входной файл в HTML-сторону.

Для всех в Google мне повезло больше с преобразованием stringify.

https://github.com/JohnPostlethwait/stringify

Ответы здесь были разочаровывающими (хотя и не нежелательными). Я импортирую шаблоны в виде строк в свои компоненты, чтобы сэкономить на HTTP-запросах, купленных у templateUrl и держите их подальше от файлов Javascript.

По какой-то причине brfs плохо играет с babel и имеет много предостережений, чтобы вообще работать.

Я не мог получить browserify-fs работать на всех.

Однако после нахождения stringify превратить это было так просто, как.

import template from '../template.html'

const definition = { template }

component.directive('myDirective', () => definition)

Переведено для пользователей ES5:

var template = require('../template.html')

component.directive('myDirective', function() {
    return {
        template: template
    }
})
Другие вопросы по тегам