最新消息:20190717 VPS服务器:Vultr新加坡,WordPress主题:大前端D8,统一介绍入口:关于

【已解决】gitbook编译偶尔报错:Error ENOENT no such file or directory stat

gitbook crifan 283浏览 0评论

mac中用gitbook去创建电子书期间,偶尔会遇到:

Error: ENOENT: no such file or directory, stat '/Users/crifan/dev/dev_root/gitbook/gitbook_src_root/program_code_style/output/program_code_style/website/gitbook/gitbook-plugin-sharing-plus/buttons.js'
make: *** [../GitbookCommon.mk:230: website] Error 1

对应makefile的230行是:

  gitbook build $(CURRENT_DIR) $(WEBSITE_FULLNAME) $(GITBOOK_COMMON_FLAGS) $(GITBOOK_BUILD_FLAGS)

即:

gitbook build 偶尔 时不时会报错Error ENOENT no such file or directory stat

虽然问题出现几率不大,但是如果出现这个错误,那么往往会连续出现几次类似的错误,都是找不到某个js:

Error: ENOENT: no such file or directory, stat '/Users/crifan/dev/dev_root/gitbook/gitbook_src_root/program_code_style/output/program_code_style/website/gitbook/gitbook-plugin-expandable-chapters-small/expandable-chapters-small.css'
make: *** [../GitbookCommon.mk:230: website] Error 1

鉴于出现几率不是很大很频繁,暂时没去深究。

所以之前的解决办法是,临时的:

重新运行一遍命令,就可以了。

无意间搜了下

gitbook Error: ENOENT: no such file or directory

gitbook serve error with ENOENT: no such file or directory(fontsettings.js&website.css) · Issue #55 · GitbookIO/gitbook-cli

gitbook build/serve 失败,Error: ENOENT: no such file or directory, stat … – 辉灬 – 博客园

好像有彻底解决的办法,去试试

使用 gitbook 时出错,求解: gitbook Error: ENOENT: no such file or directory – V2EX

➜  program_code_style git:(master) ✗ npm --version
6.1.0
➜  program_code_style git:(master) ✗ node --version
v10.4.0
➜  program_code_style git:(master) ✗ gitbook --version
CLI version: 2.3.2
GitBook version: 3.2.3

gitbook serve命令找不到fontsettings.js – kent的回答 – SegmentFault 思否

GitBook运行报错 – no such file or directory – 星之空 – CSDN博客

去找找:

<user>\.gitbook\versions\3.2.3\lib\output\website\copyPluginAssets.js

 ✗ ll /Users/crifan/.gitbook/versions/3.2.3/lib/output/website/copyPluginAssets.js 
-rw-r--r--  1 crifan  staff   2.9K 11 12  2017 /Users/crifan/.gitbook/versions/3.2.3/lib/output/website/copyPluginAssets.j
s

去编辑把:

confirm: true

改为:

confirm: false

然后希望以后能不再出现此问题,能彻底解决。

附录:

/Users/crifan/.gitbook/versions/3.2.3/lib/output/website/copyPluginAssets.js

相关函数的完整代码:

/**

    Copy assets from a plugin

    @param {Plugin}

    @return {Promise}

*/

function copyAssets(output, plugin) {

    var logger = output.getLogger();

    var pluginRoot = plugin.getPath();

    var options = output.getOptions();

    var outputRoot = options.get(‘root’);

    var assetOutputFolder = path.join(outputRoot, ‘gitbook’);

    var prefix = options.get(‘prefix’);

    var assetFolder = path.join(pluginRoot, ASSET_FOLDER, prefix);

    if (!fs.existsSync(assetFolder)) {

        return Promise();

    }

    logger.debug.ln(‘copy assets from theme’, assetFolder);

    return fs.copyDir(

        assetFolder,

        assetOutputFolder,

        {

            deleteFirst: false,

            overwrite: true,

            confirm: false

        }

    );

}

供参考。

后来网上找打了相关源码

copy-dir

没完全看懂。

但是可以确定的是:

之前的是:

    return fs.copyDir(
        assetFolder,
        assetOutputFolder,
        {
            deleteFirst: false,
            overwrite: true,
            confirm: true
        }
    );

表示:

拷贝整个目录

从asset目录拷贝到output目录

要覆盖

但是覆盖之前要确认

而改为:

    return fs.copyDir(
        assetFolder,
        assetOutputFolder,
        {
            deleteFirst: false,
            overwrite: true,
            confirm: false
        }
    );

后就是:

要覆盖

但是覆盖之前不需要确认

-》即直接覆盖即可。

另外注意到:

/Users/crifan/.gitbook/versions/3.2.3/lib/output/website/copyPluginAssets.js

中还有一个类似的函数:

function copyResources(output, plugin) {
  ...
    return fs.copyDir(
        assetsFolder,
        assetOutputFolder,
        {
            deleteFirst: false,
            overwrite: true,
            confirm: true
        }
    );
}

其中confirm也是true

不知道是否有影响。

暂时不改动。等需要时再说。

结果问题依旧:

结果发现之前改错了,应该改112行的:

然后希望后续问题彻底解决。

此处紧接着没出问题,对比之前的话,会连续再错1,2个的。

看起来有效果了。

转载请注明:在路上 » 【已解决】gitbook编译偶尔报错:Error ENOENT no such file or directory stat

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
62 queries in 0.252 seconds, using 18.84MB memory