Gulp运行任务时报错semVer.includes is not a function如何解决?
报错原因
- 核心原因是
semVer变量的类型不是字符串,undefined、null、数字等非字符串类型都没有includes方法,调用就会抛出该错误。常见的触发场景有两种:- 你没有正确导入
package.json文件赋值给pkg变量,导致pkg.version为undefined - 运行环境的Node.js版本低于ES6标准(Node.js < 4.x),低版本Node的字符串原型上没有内置
includes方法
- 你没有正确导入
- 额外注意:你的代码还存在函数名大小写不匹配的问题,函数定义为
getSemVer,导出时写的是getSemver(v小写),会导致导出值为undefined,后续任务调用也可能出问题
解决方案
- 第一步:先确认
package.json正确导入,在代码开头补全导入逻辑,同时强制将版本号转换为字符串,避免非字符串类型报错:
// 补全package.json导入,路径根据你的实际项目结构调整,若gulpfile在二级目录可改为require('../package.json') const pkg = require('./package.json'); function getSemVer(cb) { // 强制转换为字符串,避免非字符串类型调用方法报错 var semVer = String(pkg.version); if (semVer.includes("-")) { semVer = semVer.split("-")[0]; } console.log(semVer); cb(); } // 修正函数名大小写错误 exports.getSemVer = getSemVer
- 第二步:如果你的Node.js版本确实低于4.x,建议升级Node.js到LTS版本;如果暂时不能升级,可以将
includes替换为兼容性更好的indexOf方法:
// 替换if判断逻辑 if (semVer.indexOf("-") !== -1) { semVer = semVer.split("-")[0]; }
内容的提问来源于stack exchange,提问作者Chris F
相关产品推荐
相关产品推荐

