运行Node.js代码报错axios.get is not a function如何解决
问题核心原因
所有报错的根源是你的项目存放在 Google Drive 同步目录(G:\My Drive) 下。云同步盘的实时文件锁、上传同步逻辑会打断npm的文件写入、tar包解压流程,直接触发你遇到的连锁异常:
- 首次安装报
ENOTDIR错误:npm创建目录结构时被同步盘的文件占用逻辑拦截,无法自动生成node_modules目录 - 手动建目录后出现
TAR_ENTRY_ERROR/EBADF/UNKNOWN写入警告:npm解压依赖tar包时,刚写入的临时文件会被同步盘立刻锁定准备上传,npm拿不到有效文件写入权限,写入流程中途中断 - 运行代码报
TypeError: axios.get is not a function:写入中断导致node_modules下的所有依赖文件都是空文件,require引入的axios是个空对象,自然不存在get方法
修复操作
- 将整个项目文件夹从同步盘路径移出,放到纯本地磁盘的非同步目录下,比如
G:\NodeProjects\axios-test,不要放在任何云同步盘(OneDrive、iCloud Drive、各类国产云同步盘同理)目录下执行npm相关操作。 - 打开命令行进入移动后的项目目录,执行命令清理之前安装产生的异常残留:
# Windows环境下删除异常依赖目录和锁文件 rd /s /q node_modules del package-lock.json - 重新执行依赖安装命令:
正常安装过程不会再出现tar写入类警告,安装完成后可以查看npm install axiosnode_modules/axios/index.js的文件大小,不是0KB就说明依赖写入正常。 - 执行测试代码即可正常运行:
node request.js
补充说明
手动执行mkdir创建node_modules目录的操作本身没有错误,但完全解决不了问题——云同步盘拦截文件写入的底层冲突不解决,不管重复删除重装多少次依赖,最终写入的文件都会是空的。
内容的提问来源于stack exchange,提问作者ben_11
相关产品推荐
相关产品推荐

