PubLiiのトラブルシュート(同期できない😵‍💫)

【現象】

昨日の朝、ネタをまとめて、いざ公開しようと思ったら...

「Rendering process crashed」

PC再起動など、いろいろ試しましたが、駄目でした!

【推定原因】

色々、AIと相談して、とりあえず怪しい記事を削除してみたところ、

「A JavaScript error occurred in the main process」

というエラーも出る始末。(こちらのスナップショットはローカルPCの内容がモロ出しなので、省略します。🙇🏻)

でも、ここで、AIが、素敵なアドバイスをしてくれました!

「ローカルで一部の記事が削除できないエラー」と「GitHubPagesとの同期(Sync)でエラーになる現象」は、別々のトラブルではなく、根っこが完全に同じ「ひとつの原因」から引き起こされている連鎖反応です。

主が繋ぎ合わされたこの2つのパズルのピースについて、何が裏で起きているのか、そしてそれを力強く突破する解決策を解説します。

なぜ「記事の削除エラー」が「同期の失敗」を引き起こすのか?

原因は、WordPressからインポートした記事の「日本語エンコード(URLの長さ)とWindowsの文字数制限の衝突」にあります。

1. 「削除エラー」の正体(Windowsの260文字制限)

インポートした日本語タイトルの記事は、裏側では %E3%81%A3%E3%81%A1... のように、日本語1文字が約9文字の英数字に異常に長くエンコードされて保存されています。

  • Windowsには、ファイルパス(フォルダの深さとファイル名の合計)が「260文字」を超えてはならないという絶対的な壁があります。

  • Publiiで記事を削除しようとすると、システムはファイルを input/posts/ から trash/ というゴミ箱フォルダへ「移動」しようとします。

  • この移動の際、パスが長すぎたり、エンコードされた特殊文字がWindowsのファイルシステムに拒否されることで、システムエラー(EPERMENAMETOOLONG)が起き、削除処理が途中でフリーズしてしまいます。

2. 「同期失敗」への連鎖

Publiiは「記事を削除した(ゴミ箱に入れた)」という情報をデータベース(SQLite)に記録しますが、実際のWindows上のファイルは、上記の制限で消えずに残ったままになります。

  • この「データベースの記録」と「実際のファイル」のズレ(不整合)が発生します。

  • この状態で「Sync(同期)」ボタンを押すと、Publiiは送信用のファイルを生成する(レンダリングする)段階で、「消したはずのファイルが存在する」あるいは「パスが長すぎて読み込めない」という矛盾に直面し、安全のためにビルド処理を強制中断(エラー終了)します。

  • だからこそ、「通信テスト(Test Connection)は成功するのに、いざファイルを送る(Sync)とエラーになる」という、不可解な現象が起きていたのです。

【対策】

多少の紆余曲折を経ましたが、以下の手順で、無事、復旧できました!

  1.  予め、変更先ディレクトリ(例)「D:\Work\Publii\sites」を作成しておく。なお、変更先ディレクトリは、ローカルドライブでないと、速度が間に合わず同期エラーになることがあるようです。(自分の場合、NASを指定してうまくいかないことがありました。)
  2.  Publii画面左の「Tools & Plugins」 (ツール・プラグイン)でBackupsを選び、Create backup (バックアップの作成)を実行する。 C:/User/{ユーザー名}/OneDrive/ドキュメント/Publii/backups/{サイト名}/ 内に、バックアップファイル(拡張子.tar)が作成される。
  3.  Publii画面左の「Server」(サーバ)に設定してある Username / Organization,  Repository,  Branch,  Token の内容を控えておく。但し、Tokenはマスクされているので、当初設定した文字列をさがしだしておくこと。
  4.  Publii画面右のハンバーガーメニュー(⠇)から「App Setting」(アプリの設定)を選ぶ。
  5.  画面「File location」(ファイルの場所)  の 「Site location」(サイトの場所) の内容を、「D:\Work\Publii\sites」に変更する。この時、「Change sites location witiout moving existing sites yo the new catalog」(既存のサイトを新しいカタログに移動せずにサイトの場所を変更します。)を有効にすること!
  6. 「File location」(設定を保存)を実行
  7. 「Go back」(戻る)を実行
  8. 画面の「Create new website」(最初のウェブサイトを作成) ⇒ 「install from backup」(バックアップからインストール)タブに変更し、上記2で作成したバックアップファイル(拡張子.tar)を選択する。
  9. バックアップからのインストールが終わったら、 Publii画面左の「Server」 (サーバ)の設定内容を3で控えておいた内容にする。
  10. Publii画面左の「Tools & Plugins」 (ツール・プラグイン)でCustom CSS  (カスタムCSS)を設定していた場合には、「Save Changes」(変更を保存)を実行
  11. D:\Work\Publii\sites\{サイト名}\outputs\内のファイルを一度削除

自分の場合、これで再び同期できるようになりました! 

 


もし、上記手順で復旧できない場合は、ご自身で調査下さい。(私は、ただの落書屋です。PubLiiのテクニカルサポートではありませんので。🙇🏻)


PubLii : ブログなどの記事を手持ちのパソコンなどで管理できるツールです。

#PubLii #同期できない