babel6のバグを引き当てた
gulpfileの中でasync/await使ってgazeでwatchしてたんだけど、watcherの中でconstを使うとSyntaxErrorが出る問題に遭遇した。
const copy = (source, dest) => new Promise((resolve, reject) => { ncp(source, dest, err => err ? reject(err) : resolve()); }); const watch = pattern => new Promise((resolve, reject) => { gaze(pattern, (err, watcher) => err ? reject(err) : resolve(watcher)); }); gulp.task('copy', async () => { const watcher = await watch(`${src}/**/*`); watcher.on('changed', async file => { util.log('[changed]', file); const rel = file.substr(path.join(__dirname, `..${src}`).length); // ^^^^^ SyntaxError: iter.js: "rel" is read-only (This is an error on an internal node. Probably an internal error. Location has been estimated.) await copy(`${src}/${rel}`, `${dst}/${rel}`); }); });
どうやらbabelのバグらしいという情報を得た、issue見る限り同じ症状っぽい。
タグがpending triage
になってたから直るまで時間かかりそうで、ちょっと作りたいものがあるので直るまで5系使って待つことにした。
@geta6 https://t.co/BmUxCe7Si5 Babel 6 のバグっぽい気がします...
— Toru Nagashima (@mysticatea) 2015, 11月 7