ejsを3.0.1から3.0.2以上(執筆時3.1.3が最新)にアップデートした際、Cannot read property 'forEach' of undefined と表示され、ビルドに失敗する。
これは3.0.2でレガシーなコードが消されてしまったため、dependencies に関する値が利用できなくなっている。
ejs-html-loaderは残念がら更新が2019年1月で止まってしまっており(このときも1年半ぶりのアップデートだった)、Issueはあれど対応はされていない状況。
あまりコードは深堀りしていないのでこれで充分かどうかはわからないが、手元で動いた対応を記載しておく。
簡単に言えばdepsを利用しなければ良いということ。
node_modules/ejs-html-loader/src/render.js
export function render(ctx, src, data) {
let filename = ctx.resourcePath;
let delimiter = data.delimiter;
let context = data.context;
let tpl = compile(src, {filename, delimiter, context});
// depsを返さないようにする
return {
rendered: tpl(data)
};
}
一応、プルリクエストは送ってみたが、マージしてもらえるかは謎
もしかして自分で別途公開したほうが早い?
とりあえずは ejsを3.0.1で固定して利用することをおすすめする。
ejs@3.0.2 以上に対応したローダーを作成しました
ejs-html-loader が全く更新されないので自前で公開してみた
https://qiita.com/bananacoffee/items/81c73af464f949a9b0b9