Electron で Watchify(Browserify)使ってると、fs モジュールが使えないという現象にあたった。
今遊んでいる環境が、Gulp で babel と wathify で Electron なアプリケーションを差分コンパイルしながらのため、brfs を使えばいけるとか、ググったら色々でてくるが、gulp で brfs を transform に入れてもだめだった。
const fs = window.require('fs');
とかだと行けた。
が、window とかつけなくても Electron で Babel を使った Markdown なアプリケーションとかあるので、絶対いけるはずと、ググったら、node-webkitでもbrowserify使いたいしnodeのrequireも使いたい - Qiita がヒットした。
gulp.task('compile:js', $.watchify((watchify) => { var b = watchify({ watch: watching, verbose: true, debug: true, ignoreMissing: true, // これ detectGlobals: false, // これ bare: true, transform: ['babelify', 'envify'], builtins: [], // これ }); ['boot.js'].forEach((f) => { gulp.src(SRC_DIR + f) .pipe($.plumber()) .pipe(b) .pipe(buffer()) .pipe($.sourcemaps.init({ loadMaps: true })) .pipe($.if(DEBUG, $.uglify({ compress: true }))) .pipe($.if(DEBUG, $.sourcemaps.write())) .pipe(gulp.dest(DIST_DIR)); }); }));
上記のように watchify の定義の順番を変えてやればいけた。
なお環境は
"babel-core": "^6.5.2", "babel-plugin-react-transform": "^2.0.0", "babel-preset-es2015": "^6.5.0", "babel-preset-react": "^6.5.0", "babelify": "^7.2.0", "electron-prebuilt": "^0.36.9", "watchify": "^3.7.0"
な環境。