Обзор с помощью 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
}
})