2

Mozart アプリを起動しようとしていますが、何もレンダリングされず、エラーが発生します...

TypeError: this.merge is not a function 
helpers = this.merge(helpers, Handlebars.helpers); data = data || {};

明らかに関連するものは何も変更されていません-つまり。テンプレートなどを変更していないため、何が問題なのかを確認するのは困難です。npm のインストールと再実行を試みましたが、役に立ちませんでした。誰でもこの問題にぶつかりましたか?

4

1 に答える 1

4

テンプレートのプリコンパイルに使用されるハンドルバーのバージョンが、ページで実際に実行されているバージョンと異なるようです。

具体的にthis.mergeは、Handlebars 1.0.0 final で追加されたため、ページがまだ以前のバージョン (1.0.0rc4 など) を実行している場合、メソッドは存在せず、問題が発生します。

ページで使用されているハンドルバーのバージョンを更新するか、 でテンプレートの事前コンパイルに使用されているハンドルバーのバージョンを元に戻す必要がありますpackage.json

[編集:]ダウンストリームの依存関係が NPM によってインストールされる方法が原因で、問題が発生することもあります。たとえば、 で指定することもできます"handlebars": "1.0.11"が、別のパッケージが Handlebars に依存しており、別のバージョンを使用している場合、が呼び出さpackage.jsonれたときにどのバージョンの Handlebars が読み込まれるかについて、ちょっとした宝くじになる可能性があります。require()重複した依存関係が (バージョンに関係なく) スキップされるように実行することでこれを回避できますが、npm install --production最終的にはおそらく「最新バージョンに更新して一貫性を保つ」ことになります。

于 2013-09-17T01:26:38.587 に答える