Gitbookの使用中に「cb.applyは関数ではありません」エラーを修正する方法

普段使っていますGitbook、一連のマークダウンファイルから電子ブックを生成するために使用される小さなNode.jsソフトウェア。

私はそれを私の電子ブックに使用しています。今日私はPDFを生成しようとしていましたgitbook pdf .、本当に奇妙なエラーが発生したとき:

➜  ebook git:(master) ✗ gitbook pdf .
/usr/local/lib/node_modules/gitbook-cli/node_modules/npm/node_modules/graceful-fs/polyfills.js:287
      if (cb) cb.apply(this, arguments)
                 ^

TypeError: cb.apply is not a function at /usr/local/lib/node_modules/gitbook-cli/node_modules/npm/node_modules/graceful-fs/polyfills.js:287:18

cb.apply is not a function。これはどういう意味ですか?そして最も重要なのは、なぜこのエラーが発生するのですか??最近gitbookパッケージを更新しなかったし、更新しなかった…ああ、実行しているNode.jsバージョンを更新したと思う。しかし、なぜこれが問題になるのか私にはわかりません。多分そうです。

とにかく..エラーは/usr/local/lib/node_modules/gitbook-cli/node_modules/npm/node_modules/graceful-fs/polyfills.jsファイル。これはgraceful-jsnpmパッケージ、「組み込みのNode.jsのドロップイン代替品fsモジュール、さまざまな改善を行う」、週に3,300万回以上インストールされています。

それらの改善の1つは、今日、私のワークフローを壊しているようです!

Node.jsバージョンで、作成していないこのアプリケーションとこのライブラリで問題が発生する理由を見つけるために、自由な時間があまりありません。

ファイルを開きました/usr/local/lib/node_modules/gitbook-cli/node_modules/npm/node_modules/graceful-fs/polyfills.js、エラーの原因。

問題を引き起こす関数は次のとおりです。

function statFix (orig) {
  if (!orig) return orig
  // Older versions of Node erroneously returned signed integers for
  // uid + gid.
  return function (target, cb) {
    return orig.call(fs, target, function (er, stats) {
      if (!stats) return cb.apply(this, arguments)
      if (stats.uid < 0) stats.uid += 0x100000000
      if (stats.gid < 0) stats.gid += 0x100000000
      if (cb) cb.apply(this, arguments)
    })
  }
}

これは、古いバージョンのNode.jsで何かを修正しているようです。私にとっては必要ないはずです。

同じファイルの62〜64行目で使用されていることがわかります。

fs.stat = statFix(fs.stat)
fs.fstat = statFix(fs.fstat)
fs.lstat = statFix(fs.lstat)

私はそれらの行をコメントアウトしました:

// fs.stat = statFix(fs.stat)
// fs.fstat = statFix(fs.fstat)
// fs.lstat = statFix(fs.lstat)

そしてすべてがうまくいきました、私は走ることができましたgitbookもう一度コマンドを実行すると、素敵なPDFが得られました。

私の無料ダウンロードJavaScriptビギナーズハンドブック


その他のjsチュートリアル: