Fsオブジェクトを使用するファイルでbrowserifyを使用しようとしました。ブラウザ化すると、require('fs')
の呼び出しが変換されず、require
が{}
を返します。
これの回避策はありますか?私はstackoverlowや他の場所でいくつかの提案を見てきましたが、完全には実現されていないようです。
私が実際に教えているクラスのbrowserifyを使用して、グーグルウェブパッケージアプリを作成したいと思っていました。
前もって感謝します。
その場合、ブラウザはどのファイルシステムを使用する必要がありますか? HTML5ファイルシステムは、従来のファイルシステムと実際には比較できません。シンボリックリンクはなく、Webワーカーの外部から非同期でのみアクセスできます。
したがって、答えは次のとおりです。Node.jsで実行する場合はfsモジュールに依存できる抽象化レイヤーを自分で作成し、ブラウザで実行する場合は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オブジェクトにアクセスできます。
ありがとう
Require(fs)を使用する必要がありますか?常にhtml5ファイルリーダー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側に入力ファイルを挿入する必要があります。
グーグルの誰にとっても、私は文字列化変換ではるかに幸運でした。
https://github.com/JohnPostlethwait/stringify
ここでの答えは苛立たしいものでした(歓迎すべきことではありません)。テンプレートを文字列としてコンポーネントにインポートして、templateUrl
によって購入されたHTTPリクエストを保存し、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
}
})