今天在搭建typescipt开发环境,搭建好后执行demo程序,用tsc命令编译ts文件,结果出现下面错误:
main.ts:4:22 - error TS2737: BigInt literals are not available when targeting lower than ES2020.
提示是版本过低不支持BigInt,不过这是ts版本还是node版本低还不是很清楚,因为我是用nvm管理的node版本的,所以就开始漫长的调试升级过程。
1,尝试升级node 用nvm将node版本升到最新版本
nvm install v21.2.0
nvm use 21.2.0
npm install typescript
然后再次执行,结果还是提示相同的错误,难道是没安装成功?我用node命令直接运行js文件,发现能正常执行bigint,所以排除nodejs问题。那就基本确定是ts版本问题或配置问题。
2,尝试按正常流程创建ts项目,之前是没建项目,直接写demo和用命令行运行,所以不是不规范。 a)第一步创建文件夹
mkdir tsdemo
b)第二步初始化项目
npm init
c)第三步安装typescript/tslint和NodeJS的类型声明
npm install --save-dev typescript tslint @types/node
d)配置配置tsconfig.json,可以自己新建配置,或运行命令行 新建配置:
{
"compilerOptions": {
"lib": ["ES2020"],
"module": "commonjs",
"outDir": "dist",
"sourceMap": true,
"strict": true,
"target": "es2020"
},
"include": [
"src"
]
}
或运行命令:
./node_modules/.bin/tsc --init
配置说明:
基本配置项目说明:
include ts文件在哪个文件夹中
lib 运行环境包括哪些api
module ts代码编译成什么模块系统
outDir 编译后的js代码存放位置
stirct 是否开启严格模式
target ts编译成js的标准
... 有很多配置项具体可以查看其它资料
e)配置tslint.json,可以自建文件配置或用命令行
{
"defaultSeverity": "error",
"extends": [
"tslint:recommended"
],
"jsRules": {},
"rules": {
"no-console": false
},
"rulesDirectory": []
}
或用命令:
./node_modules/.bin/tslint --init
f)在src目录下创建ts文件
let bi: bigint = 19n;
console.log(bi);
g)编译
./node_modules/.bin/tsc
h)运行
node ./dist/index.js
通过上面一些列操作,终于不报错了,主要原因是tsc编译默认target不是es2020,所以需要修改ts配置,第一次创建ts项目,很多东西不懂。