NestJS+TypeScript部署后数组.at方法报错:.at is not a function如何解决?
解决数组.at()方法在预发布服务器报错的问题
问题根因
数组的.at()是ES2022新增的语法,你的预发布服务器Node.js版本低于支持该方法的最低要求(Node.js 16.6.0+ 或 14.17.0+),而本地Node版本较新,所以本地运行正常、服务器触发报错。
具体解决办法
升级服务器Node.js版本
登录服务器执行node -v查看当前版本,若低于14.17.0或16.6.0,直接升级到符合要求的LTS版本(比如18.x或20.x),升级后问题可直接解决。替换为兼容写法(无需升级Node)
如果暂时无法升级Node,把.at()换成传统兼容写法:- 正索引场景:
arr.at(2)→arr[2] - 负索引场景:
arr.at(-1)→arr[arr.length - 1],以此类推,负索引-n对应正索引arr.length - n。
- 正索引场景:
添加Polyfill兼容旧Node版本
若不想修改业务代码,可通过polyfill让旧Node支持.at():- 安装依赖:
npm install core-js - 在NestJS项目入口文件(比如
src/main.ts)顶部添加导入:import 'core-js/features/array/at'; - 确保
tsconfig.json中target字段设为服务器Node支持的版本(比如ES2020),lib字段包含ES2022。
- 安装依赖:
额外检查
确认NestJS的构建配置没有跳过ES2022语法转译,比如tsconfig.json的compilerOptions是否正确设置,避免构建后的代码保留服务器不支持的语法特性。
内容的提问来源于stack exchange,提问作者Tobi
相关产品推荐
相关产品推荐

