1

私の MacOS には ApostropheCMS 2 のコピーがインストールされていますが、ブログ モジュールに問題があります。既存のブログ記事を編集しようとすると、「その項目は存在しません。」と表示されますが、記事一覧には表示されます。

したがって、ここに app.js があります。

'apostrophe-blog': {
  widget: true,
  contextual: true 
},
'apostrophe-blog-pages': {},
'apostrophe-blog-widgets': {},

そして「モジュール{」の前に私は持っています:

 bundles: [ 'apostrophe-blog' ],

私の apostrophe-blog-page.html には以下が含まれます。

 {% block main %}
  <div class="main-content">

        {{ apos.area(data.page, 'body', {
        widgets: {
            'apostrophe-blog': {}
        }
        }) }}

  </div>
{% endblock %}

現在: /blog ページは空で、記事リストではすべての記事を表示できますが、一度編集しようとすると、「その項目は存在しません」というエラーが表示されます。

解決策はありますか?

4

1 に答える 1

0

そのため、この問題をかなり掘り下げたところ、以前のリリースのアポストロフィまたはその依存関係の 1 つに関連しているようです (エラーが発生している場所を正確に特定できませんでした)。

これは、分離された VM で実行している 3 つの異なる Apostrophe 展開で見たシナリオです。

断続的に、未定の時間が経過すると、apostrophe-blog モジュールは、Mongo で新しく作成されたドキュメントで publishedAt プロパティの自動作成を停止します。参考までに、データを掘り下げている場合は、次のクエリを使用して aposDocs コレクションでそれらを見つけることができます。

すべてのブログ記事を一覧表示する

db.getCollection('aposDocs').find({"type": "apostrophe-blog"})

プロパティが欠落しているすべてのブログ記事を一覧表示する

db.getCollection('aposDocs').find({"type": "apostrophe-blog", "publishedAt": {$exists : false}})

次に、次のステートメントを使用してプロパティに追加し直すと、破損した記事を修正できます。

db.getCollection('aposDocs').update({"type": "apostrophe-blog", "publishedAt": {$exists : false}}, {$set: {"published": false, "publishedAt": ""}})

記事が読み込まれるはずです。次のステップは、これが再び起こらないようにすることです。私たちが見つけたのは、私たちのインストールが古くなっているということです。次のコマンドを実行して、更新が必要かどうかを確認できます。

npm outdated

これにより、次のようなレポートが出力されます。

apostrophe         2.1.5  2.10.2  2.10.2  apostrophe

私たちの場合、アポストロフィはかなり時代遅れでした。次に、次の方法で更新しました。

npm update apostrophe

これにより、インストールが最新の状態になります。今テストしたところ、DB 内のすべての新しいアポストロフィ ブログ ドキュメントに対して publishedAt プロパティが適切に自動作成されていることがわかりました。

于 2016-12-07T20:45:03.277 に答える