Браузер с требованием ('fs')
Я пытался использовать браузеру в файле, который использует объект fs. Когда я его просматриваю, вызов require('fs')
не преобразуется, а require
возвращает {}
.
Есть ли обходной путь для этого? Я видел некоторые предложения по stackoverlow и в других местах, но ни один из них не был полностью реализован.
На самом деле я надеялся создать веб-приложение с Google браузером, используя браузер для класса, который я преподаю.
Спасибо заранее.
Ответы
Ответ 1
Какую файловую систему следует использовать браузеру? Файловая система HTML5 на самом деле не сравнима с традиционной файловой системой. У него нет символических ссылок, и он доступен только асинхронно за пределами Web Workers.
Итак, ответ: Напишите сам уровень абстракции, который может полагаться на модуль fs при работе в Node.js и API HTML5 FS при работе в браузере. Различия слишком велики, чтобы пересканировать для вас перевод.
Ответ 2
Если вы хотите встроить содержимое файла из вызовов fs.readFileSync()
, вы можете использовать brfs:
var fs = require('fs');
var src = fs.readFileSync(__dirname + '/file.txt');
то do:
browserify -t brfs main.js > bundle.js
и src
будет установлено содержимое file.txt
во время компиляции.
Ответ 3
Если вы хотите запустить файловую систему с помощью браузера, вы можете установить npm.
npm install browserify-fs
и вы можете получить доступ к объекту fs на стороне клиента.
Благодаря
Ответ 4
Для тех, кто в 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
}
})