Alexa SDK (ask-sdk) をインストール npm install 時に、ERR! errno -4094 syscall fsync という見慣れないエラーが発生した。
最終的にはハードディスクの初期化(再フォーマット)を行って解決した。
ask-sdk のインストールに失敗
npm install --save ask-sdk
e:\Users\tombi\Projects\diceroller>npm install --save ask-sdk
npm WARN rollback Rolling back isarray@1.0.0 failed (this is probably harmless): EPERM: operation not permitted, unlink 'e:\Users\tombi\Projects\diceroller\node_modules\isarray\package.json.1464894368'
npm WARN diceroller@1.0.0 No description
npm WARN diceroller@1.0.0 No repository field.
npm ERR! code UNKNOWN
npm ERR! errno -4094
npm ERR! syscall fsync
npm ERR! UNKNOWN: unknown error, fsync
npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users\tombi\AppData\Roaming\npm-cache\_logs\2019-04-13T22_59_13_635Z-debug.log
ERR! 発生、見事に失敗したようだ。
同一事象の事例を発見したが、解決しなかった。
syscall fsync とかいうストレージ(ディスク)周りのかなり低レベルのエラーに思えたので、Cドライブのエラーをチェックしてみたが異状なし。
npm cache verify
Cache verified and compressed (~\AppData\Roaming\npm-cache\_cacache):
Content verified: 11 (5764738 bytes)
Index entries: 15
Finished in 0.059s
別に問題ないようだが、常套手段のキャッシュ一掃を念のためやる。
npm cache clean --force
npm WARN using --force I sure hope you know what you are doing.
その後、npm install したが、やはり解決しなかった。
Eドライブのエラーもチェック
よく考えると、-g オプションなしでインストールしているので、インストール先のドライブはCではなくて、プロジェクトのファイルがあるEドライブだった。
ドライブの修復を試みると、数秒で完了し、検出されませんでした。などと言われる。
そして、再び npm install (何らかの操作)をするとその瞬間に、
というメッセージが出る。どうも、ドライブそのものが相当怪しいようだ。
そういえば毎朝、このドライブでエラーが出ているな…いつも無視してきたが。
プロジェクトごと、Dドライブにコピーして再実行したら、あっさり成功した
Eドライブと同じフォルダ構成を、Dドライブに作った。
そして package.json もコピーした。
dir
ドライブ D のボリューム ラベルは アプリ です
ボリューム シリアル番号は 7E41-295B です
D:\Users\tombi\Projects\diceroller のディレクトリ
2019/04/14 10:00 <DIR> .
2019/04/14 10:00 <DIR> ..
2019/04/14 07:26 219 package.json
1 個のファイル 219 バイト
2 個のディレクトリ 136,848,175,104 バイトの空き領域
npm install ask-sdk
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN diceroller@1.0.0 No description
npm WARN diceroller@1.0.0 No repository field.
+ ask-sdk@2.5.1
added 19 packages from 69 contributors and audited 22 packages in 3.509s
found 0 vulnerabilities
Eドライブ、4TBもあるのに爆弾抱えた状態ってこと?
8時間かかるけど、ディスク修復を試す
Data Lifeguard Diagnostic for Windows
で Eドライブを簡易チェックしてみたが、簡易チェックでは特に支障はない。
しかし Windows イベントログには、そもそもマスタブートレコード MBTがおかしいという趣旨のエラーが出ているので 修復を図ることにした。
一旦、このPCの管理者ユーザに切り替えて、裏番組で実行しておく。
見積りでは8時間とのことなので、夜、寝る前には完了するはずだ。
再び、開発者ユーザ(管理者権限あり)に戻して、開発環境構築を続行する。
8時間後、Data Lifeguard Diagnostic からは何もエラーは発見されなかったとの報告。
・・・最初から chkdsk /F しておけばよかった。また今度やろう。
再び8時間かけて chkdsk /R /F を実行したが「問題は見つかりませんでした」
chkdsk /R /F
(ステージ1~4略)
ステージ 5: 不良空きクラスターを探しています ...
969201722 個の空きクラスターが処理されました。
空き領域の検査が終了しました。
Windows でファイル システムのスキャンが終了しました。
問題は見つかりませんでした。
これ以上の操作は必要ありません。
(中略)
0 KB : 不良セクター
(下略)
その後、やっぱりすぐにエラーが再発した。治ってない。
MBTを直接更新する何かの方法を試すしかなさそうだ。別途…
最終手段のハードディスク初期化
何をやっても治らないので、ハードディスクを再フォーマットして初期化することにした。4TBもあると、なかなか終了しないな…放置して寝るわ。
ハードディスク初期化したら、成功するようになった。
適当なプロジェクトフォルダを、初期化してドライブレター E を割り当て直したディスク2 に作成してから、node.js command prompt からプロジェクト新規作成。
npm init
(略)問題なし
以前、失敗した ask-sdk をインストール
npm install --save ask-sdk
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN kidsmorning@1.0.0 No description
npm WARN kidsmorning@1.0.0 No repository field.
+ ask-sdk@2.5.1
added 19 packages from 69 contributors and audited 22 packages in 16.431s
found 0 vulnerabilities
別のパッケージも続けてインストール
npm i -save i18next i18next-sprintf-postprocessor
npm WARN kidsmorning@1.0.0 No description
npm WARN kidsmorning@1.0.0 No repository field.
+ i18next@15.0.9
+ i18next-sprintf-postprocessor@0.2.2
added 4 packages from 3 contributors and audited 26 packages in 2.668s
found 0 vulnerabilities
これで、心おきなく Eドライブが使えるぞ。
ドライブエラーも出なくなった
のメッセージも出なかったし。