Node.js ENOENT错误求助:找不到credentials.json文件
修复VoximplantApiClient路径ENOENT错误
问题原因
你遇到的ENOENT错误本质是相对路径解析基于当前工作目录(CWD),而非脚本文件所在目录。即使你觉得路径正确,若运行脚本的目录和脚本所在目录不一致,相对路径就会指向错误位置。比如你在项目根目录/Users/sam/Desktop/Call-Nodejs运行node src/index.js,代码里的../config会指向/Users/sam/Desktop/config,而非项目根目录下的config文件夹。
解决方案
1. 使用绝对路径(推荐)
在ES6模块中,利用import.meta.url获取当前脚本的绝对路径,结合path模块拼接目标文件路径,确保路径始终正确:
import VoximplantApiClient from '@voximplant/apiclient-nodejs'; import { fileURLToPath } from 'url'; import { dirname, join } from 'path'; // 转换ES模块的文件URL为绝对路径 const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); // 拼接credentials.json的绝对路径 const client = new VoximplantApiClient.default(join(__dirname, '../config/credentials.json'));
2. 调整相对路径或运行目录
- 若你的脚本位于项目根目录的子文件夹(如
src),直接使用相对于项目根目录的路径:
前提是你始终在项目根目录下运行脚本(const client = new VoximplantApiClient.default('./config/credentials.json');node src/index.js)。 - 或者切换到脚本所在目录再运行:
cd src && node index.js
3. 验证文件实际位置
可以在代码中临时打印当前工作目录和目标路径,确认是否匹配:
import { resolve } from 'path'; console.log('当前工作目录:', process.cwd()); console.log('目标路径:', resolve('../config/credentials.json'));
打印结果能直观看到路径是否指向正确的文件位置。
内容的提问来源于stack exchange,提问作者cwecae
相关产品推荐
相关产品推荐

