[英]Gitbook-cli install error TypeError: cb.apply is not a function inside graceful-fs
在终端中执行任意gitbook
命令时,抛出如下错误:
/home/travis/.nvm/versions/node/v12.18.3/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 /home/travis/.nvm/versions/node/v12.18.3/lib/node_modules/gitbook-cli/node_modules/npm/node_modules/graceful-fs/polyfills.js:287:18
at FSReqCallback.oncomplete (fs.js:169:5)
注意:这不会发生在节点版本 v12.18.2 中,并且仍然发生在版本 v14.6.0 中
gitbook-cli
现在似乎无法正常工作,因为它们过时graceful-fs
依赖性而失败。
任何想法如何解决这一问题?
这个问题最初是graceful-fs
内部的一个问题,但我相信他们在这个提交中解决了它。
问题是 GitBook 仍在使用过时的依赖项,这些依赖项在没有修复的情况下引入了优雅的 fs 版本。
我找到的解决方案是像这样更新 gitbook 中的graceful-fs
:
如果您通过执行npm install -g gitbook-cli
全局npm install -g gitbook-cli
那么您在 macOS 中的路径应该类似于/usr/local/lib/node_modules/gitbook-cli/node_modules/npm/node_modules
。 您的路径可能因您的操作系统或安装位置而异。
运行这个:
cd /usr/local/lib/node_modules/gitbook-cli/node_modules/npm/node_modules/
npm install graceful-fs@latest --save
然后尝试安装 GitBook。 它应该已经解决了安装问题。
最后一个解决方案很棒,但是当我在正确的位置使用npm install graceful-fs@latest --save
然后重新运行gitbook build
,出现以下错误:
_stream_readable.js:545
switch (state.pipesCount) {
^
TypeError: Cannot read property 'pipesCount' of undefined
at module.exports.Readable.pipe (_stream_readable.js:545:16)
at module.exports.ZipArchiveOutputStream._smartStream (/node_modules/compress-commons/lib/archivers/zip/zip-archive-output-stream.js:184:11)
at module.exports.ZipArchiveOutputStream._appendStream (/node_modules/compress-commons/lib/archivers/zip/zip-archive-output-stream.js:96:20)
at module.exports.ArchiveOutputStream.entry (/node_modules/compress-commons/lib/archivers/archive-output-stream.js:88:10)
at module.exports.ZipStream.entry (/node_modules/zip-stream/index.js:138:49)
at Zip.append (/node_modules/archiver/lib/plugins/zip.js:53:15)
at Archiver._moduleAppend (/node_modules/archiver/lib/core.js:172:16)
at Archiver._onQueueTask (/node_modules/archiver/lib/core.js:370:8)
at /node_modules/async/dist/async.js:3879:9
而且……猜猜怎么着,当我change the version of graceful-fs to 4.2.0
,一切都奏效了……
只需用以下文件替换崩溃文件polyfills.js
:https://raw.githubusercontent.com/isaacs/node-graceful-fs/168bdb8f0bb3174e8499d4bc5878deead4172c39/polyfills.js
这在 Node.js v16.13.0 中非常有用。
WSL2 的完整说明
安装 nvm curl -o-https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash 关闭 WSL bash shell 并重新打开 nvm install --lts
检查版本并安装node --version npm --version
安装 gitbook-cli npm install -g gitbook-cli
任何 gitbook 命令都会给出错误gitbook build TypeError: Cannot set property 'readableListening' of undefined for internal/streams/readable.js:864 state.readableListening = this.listenerCount('readable') > 0;
cd /home/<USER_NAME>/.nvm/versions/node/v14.17.1/lib/node_modules/gitbook-cli/node_modules/npm/node_modules/ npm install graceful-fs@4.2.0 --save
然后cd到你的git文档文件夹gitbook install gitbook serve
您可以将package-lock.json
> gitbook-cli
> npm
> graceful-fs
为:
"graceful-fs": {
"version": "4.2.8",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz",
"integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==",
"dev": true
},
然后使用npm ci
这对我有用:
npm install graceful-fs@latest --save
然后重新运行:
npm install -g gitbook-cli
更新 ===== 另一种选择是使用 NVM 并安装节点 v12.8.2。
对于那些很忙没有时间调试的人:
npm install gitbook-cli@2.1.2 --global
vim ~/.gitbook/versions/3.2.3/lib/output/website/copyPluginAssets.js
,全部替换confirm: true
为confirm: false
gitbook serve
然后一切顺利。
我的环境:
我使用 nvm 将 Node 版本更改为12
,并且工作正常。
重新安装graceful-fs
和gitbook-cli
包来解决这个问题,
在项目根文件夹上打开一个终端。
在终端中执行以下命令。
npm install graceful-fs@latest --save npm install -g gitbook-cli
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.