getalog

console.log geta6

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系使って待つことにした。