安装npm包时路径带/src是什么含义?graphql-tag/src安装超时如何解决
问题解决步骤
首先明确报错根因:
- 代码中导入了
graphql-tag/src子路径:npm官方源发布的graphql-tag包默认不包含src目录,只有编译后的产物,该路径本身就不存在。之前项目能运行大概率是之前的依赖是直接从github拉取的完整仓库源码,或是使用的旧版本包还附带了src目录。 - npm对
[包名]/[后缀]格式的安装参数会默认识别为github用户名/仓库名,所以你执行提示的npm install graphql-tag/src命令会尝试拉取github上名为graphql-tag/src的不存在的仓库,走SSH超时是因为运行环境没有配置github SSH密钥,且该仓库本身就不存在。
步骤1:修改代码中的错误导入语句
打开报错对应的./src/utils/graphql.js文件,查找所有导入graphql-tag/src的语句,大概率是类似下面的写法:
import gql from 'graphql-tag/src' // 或者 const gql = require('graphql-tag/src')
直接修改为标准的包导入写法:
import gql from 'graphql-tag' // 或者 const gql = require('graphql-tag')
如果是旧版本graphql-tag的特殊用法需要引入src下的特定文件,也可以对应修改为包内的正确相对路径,比如graphql-tag/src/index.js,但绝大多数场景下直接导入根包即可。
步骤2:清理依赖缓存重新安装
执行以下命令清理旧的依赖和缓存,避免残留文件影响:
# 删除node_modules和lock文件 rm -rf node_modules package-lock.json yarn.lock # 清理npm缓存 npm cache clean --force # 重新安装全量依赖 npm install
步骤3:验证构建
重新执行构建命令验证是否解决:
npm run build
可选:如果依然报错的排查方向
- 检查package.json中是否有
graphql-tag的错误依赖配置,比如配置了不存在的github仓库地址,直接改为官方稳定版本号即可,比如"graphql-tag": "^2.12.6" - 检查项目是否配置了npm的git自动转换规则,运行
git config --list查看是否有url."ssh://git@github.com/".insteadOf这类配置,如果有可以临时删除该配置避免HTTP被强制转SSH:git config --global --unset url."ssh://git@github.com/".insteadOf
内容的提问来源于stack exchange,提问作者4bdl
相关产品推荐
相关产品推荐

