执行npm start遇webpack正则表达式错误:字符类属性名无效,已尝试降级webpack
Webpack RuntimeTemplate正则表达式语法错误排查与解决
执行npm start时触发webpack内部模块的语法错误,错误源为/app/node_modules/webpack/lib/RuntimeTemplate.js文件第64行的正则表达式。已尝试降低webpack版本,当前环境配置:
- Node.js:18.16.0
- TypeScript:5.0.2
错误详情
/app/node_modules/webpack/lib/RuntimeTemplate.js:64 trimmed.match(/^[\p{L}_][_0-9\p{L}]*$/iu) || ^^^^^^^^^^^^^^^^^^^^^^^^^^ SyntaxError: Invalid regular expression: /^[\p{L}_][_0-9\p{L}]*$/: Invalid property name in character class at internalCompileFunction (node:internal/vm:73:18) at wrapSafe (node:internal/modules/cjs/loader:1176:20) at Module._compile (node:internal/modules/cjs/loader:1218:27) at Module._extensions..js (node:internal/modules/cjs/loader:1308:10) at Module.load (node:internal/modules/cjs/loader:1117:32) at Module._load (node:internal/modules/cjs/loader:958:12) at Module.require (node:internal/modules/cjs/loader:1141:19) at require (node:internal/modules/cjs/helpers:110:18) at Object.<anonymous> (/app/node_modules/webpack/lib/Compilation.js:53:25) at Module._compile (node:internal/modules/cjs/loader:1254:14) Node.js v18.16.0
问题原因
该错误源于webpack版本与Node.js 18的兼容性不匹配:
Node.js 18支持Unicode属性转义(\p{L}这类语法),但部分旧版webpack(低于5.74.0)的内部正则写法未适配Node.js 18的解析规则,反而触发语法错误;若使用过高版本webpack,也可能出现与项目旧依赖的兼容冲突。
解决步骤
- 匹配webpack与Node.js版本:
安装与Node.js 18兼容的webpack版本,推荐webpack 5.74.0及以上版本,执行命令:npm install webpack@^5.74.0 --save-dev - 清理依赖缓存并重装:
删除本地依赖目录和锁文件,重新安装确保依赖完整性:rm -rf node_modules package-lock.json npm install - 排查依赖冲突:
查看webpack依赖树,确认是否有其他插件强制引入了不兼容的webpack版本:
若发现冲突包,可通过npm ls webpackresolutions字段(npm需配合npm-force-resolutions工具)锁定webpack版本。
内容的提问来源于stack exchange,提问作者Abhishek
相关产品推荐
相关产品推荐

