Подтвердить что ты не робот

Браузер с требованием ('fs')

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

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

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

Спасибо заранее.

4b9b3361

Ответ 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
    }
})