nvm环境下的typescript升级

277 阅读2分钟

今天在搭建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项目,很多东西不懂。