You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Travis部署npm模块时遭遇ENOENT文件不存在错误

解决Travis部署npm模块时的ENOENT目录不存在错误

你碰到的这个ENOENT错误,核心原因很明确:你的代码要操作JSON文件夹,但Travis的构建环境里根本没有这个目录——毕竟Git默认不会追踪空文件夹,所以当Travis拉取你的代码时,空的JSON目录不会被同步到构建环境中。

给你两个实用的解决思路,按需选择:

  • 方案一:代码层面自动创建目录(最推荐)
    既然你已经在用fs-extra,它自带的ensureDir方法可以完美解决这个问题——它会自动检查目标目录是否存在,不存在就帮你创建出来。在你执行任何需要访问JSON文件夹的操作(比如scandir)之前,加一段简单的逻辑:

    import fs from 'fs-extra';
    
    // 先确保JSON目录存在,不存在则自动创建
    await fs.ensureDir('./JSON');
    
    // 之后再执行你的文件操作,比如:
    // const files = await fs.readdir('./JSON');
    

    不管是本地开发还是Travis构建,这段代码都能保证目录存在,从根源避免找不到目录的问题。

  • 方案二:通过Git追踪空目录
    如果你不想修改代码,可以在JSON文件夹里放一个名为.gitkeep的空文件(这是Git的约定文件名,用来标记需要被追踪的空目录)。这样Git就会把这个目录同步到Travis环境里:

    1. 在本地的JSON目录下创建.gitkeep文件
    2. 提交并推送这个文件:git add JSON/.gitkeep && git commit -m "Add .gitkeep to track JSON directory"
    3. 重新触发Travis构建即可

另外可以加个小排查技巧:如果不确定路径是否正确,在代码里打印当前工作目录和目标目录的绝对路径,方便定位问题:

import path from 'path';

console.log('当前工作目录:', process.cwd());
console.log('JSON目录绝对路径:', path.resolve('./JSON'));

内容的提问来源于stack exchange,提问作者Taylor Austin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:24:00