You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gulp运行任务时报错semVer.includes is not a function如何解决?

报错原因
  • 核心原因是semVer变量的类型不是字符串,undefined、null、数字等非字符串类型都没有includes方法,调用就会抛出该错误。常见的触发场景有两种:
    1. 你没有正确导入package.json文件赋值给pkg变量,导致pkg.version为undefined
    2. 运行环境的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 14:45:03