lodash和typescript兼容性问题导致的报错(更新版本后遇到)
报错信息
javascript
ERROR Failed to compile with 4 errors 11:18:09
error in node_modules/@types/lodash/common/common.d.ts:266:65
TS1005: '?' expected.
264 | [P in keyof T]?: T[P] extends object ? object : T[P]
265 | };
> 266 | type StringToNumber<T> = T extends `${infer N extends number}` ? N : never;
| ^
267 | // For backwards compatibility
268 | type LoDashImplicitArrayWrapper<T> = LoDashImplicitWrapper<T[]>;
269 | type LoDashImplicitNillableArrayWrapper<T> = LoDashImplicitWrapper<T[] | null | undefined>;
error in node_modules/@types/lodash/common/object.d.ts:1026:46
TS1005: '?' expected.
1024 | type GetFieldTypeOfArrayLikeByKey<T extends unknown[], K> =
1025 | K extends number ? T[K]
> 1026 | : K extends `${infer N extends number}` ? T[N]
| ^
1027 | : K extends keyof T ? T[K] : undefined;
1028 |
1029 | type GetFieldTypeOfStringByKey<T extends string, K> =
error in node_modules/@types/lodash/common/object.d.ts:1031:46
TS1005: '?' expected.
1029 | type GetFieldTypeOfStringByKey<T extends string, K> =
1030 | K extends number ? T[K]
> 1031 | : K extends `${infer N extends number}` ? T[N]
| ^
1032 | : K extends keyof T ? T[K]
1033 | : undefined;
1034 |
error in node_modules/@types/lodash/common/object.d.ts:1041:46
TS1005: '?' expected.
1039 | : K extends number
1040 | ? `${K}` extends keyof T ? T[`${K}`] : undefined
> 1041 | : K extends `${infer N extends number}`
| ^
1042 | ? N extends keyof T ? T[N] : undefined
1043 | : undefined;
1044 |
ERROR Error: Build failed with errors.
解决方案
javascript
// 重新安装lodash版本适应typescript版本4.1
cnpm i -D @types/lodash@ts4.1
内存溢出
1、安装cross-env和increase-memory-limit
npm install cross-env increase-memory-limit
2、package.json添加如下内容:
javascript
"scripts": {
"serve": "vue-cli-service serve",
"build": "vue-cli-service build",
"fix-memory-limit": "cross-env LIMIT=20000 increase-memory-limit"
},
3、执行命令
npm run fix-memory-limit
4、执行后报错:'"node --max-old-space-size=4096"' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
方案1、在项目的node_modules/.bin下面找到所有的"%_prog%" 改为 %_prog%, 去掉双引号。

方案2、避免替换代码出现风险
"build:prod": "vue-cli-service build",
替换为
"build:prod": "node --max_old_space_size=4096 node_modules/@vue/cli-service/bin/vue-cli-service.js build",
"serve": "vue-cli-service serve",
替换为
"serve": "node --max_old_space_size=4096 node_modules/@vue/cli-service/bin/vue-cli-service.js serve --open",