在koa+ts項目中,配置tsconfig使其IDE支持快速跳轉,可是用tsnode編譯時報錯node
代碼以下webpack
import {add} from '@/lib'
const output = 'Hello World'
console.log(output)
console.log(add(1, 2))
複製代碼
可是編譯時報錯:Error: Cannot find module '@/lib'。
git
在 tsconfig.json 裏定義的 @ 別名,ts-node 根本不鳥你。因此咱們懷疑 ts-node 沒有識別 tsconfig.json。查了一圈發現這個 stackoverflow.com/questions/5…github
ts-node 7.0.0 以上就不自動識別 tsconfig.json 了,得加上 --files
才能識別,好吧。web
運行 ts-node ./src/main.ts --files
npm
結果仍是報錯json
按照 stackoverflow 上的提示確定是能夠識別 tsconfig.json 的,因此這裏個人猜測是 ts-node 不支持alias,畢竟這玩竟其實屬於 webpack。查了一下,果真。markdown
github.com/TypeStrong/… 這個 Issue 就說明了咱們剛剛遇到了不能使用 alias 的問題。解決方案是咱們得再裝一個 tsconfig-paths 的包。app
npm i -D tsconfig-paths
ts-node -r tsconfig-paths/register ./src/main.ts --files
複製代碼
總算是成功了。koa
參考:www.barretlee.com/blog/2019/0…
// launch.json配置
"runtimeExecutable": "/usr/local/bin/nodemon",
"runtimeArgs": [
"--exec",
"ts-node",
"-r",
"tsconfig-paths/register",
"--files"
],
"program": "${workspaceFolder}/src/main.ts",
複製代碼
以上配置至關於執行了
[nodemon] starting `ts-node -r tsconfig-paths/register --files ./src/main.ts`
複製代碼
// launch.json配置
"runtimeExecutable": "/usr/local/bin/nodemon",
"runtimeArgs": [
"--exec",
"ts-node",
"-r",
"tsconfig-paths/register",
"--files"
],
"args": ["${workspaceFolder}/src/main.ts"],
複製代碼
以上配置至關於執行了
[nodemon] starting `ts-node -r tsconfig-paths/register --files /Users/xxx/xxx/src/main.ts`
複製代碼
能夠看到,地址變成了絕對路徑
使用 ts-node 的時候要添加 --files 去識別你的 tsconfig.json 文件
安裝 tsconfig-paths 這個包來使用路徑別名 alias