Browserify с require('fs'))
Я пытался использовать browserify в файле, который использует объект fs. Когда я browserify это вызов require('fs')
не трансформируется и require
возвращает {}
.
есть ли обходной путь для этого? Я видел некоторые предложения по stackoverlow и в других местах, но ни один из них, похоже, полностью не реализован.
Я на самом деле надеялся создать веб-приложение google, используя browserify для класса, который я преподаю.
спасибо заранее.
5 ответов
какую файловую систему должен использовать браузер? Файловая система HTML5 на самом деле не сопоставима с традиционной файловой системой. Он не имеет символических ссылок, и он доступен только асинхронно вне веб-работников.
Итак, ответ: напишите слой абстракции самостоятельно, который может полагаться на модуль fs при запуске в узле.js и HTML5 FS API при запуске в браузере. Различия слишком велики, чтобы browserify перевести для вас.
если вы хотите встроить содержимое файла из 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 на стороне клиента.
Спасибо
для тех, кто на 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
}
})
необходимо ли вам использовать 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.