使用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环境里:- 在本地的
JSON目录下创建.gitkeep文件 - 提交并推送这个文件:
git add JSON/.gitkeep && git commit -m "Add .gitkeep to track JSON directory" - 重新触发Travis构建即可
- 在本地的
另外可以加个小排查技巧:如果不确定路径是否正确,在代码里打印当前工作目录和目标目录的绝对路径,方便定位问题:
import path from 'path'; console.log('当前工作目录:', process.cwd()); console.log('JSON目录绝对路径:', path.resolve('./JSON'));
内容的提问来源于stack exchange,提问作者Taylor Austin
相关产品推荐
相关产品推荐

