You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

tsconfig中paths目录别名失效:使用$lib导入模块提示找不到包

解决ts-node无法识别SvelteKit路径别名$lib的问题

问题场景

文件结构:

  • src/lib/db.ts:待导入的模块文件
  • script.ts:通过import ... from "$lib/db"语句导入上述模块

tsconfig.json中的路径配置(由SvelteKit自动生成):

"paths": {
    "$lib": [
        "src/lib"
    ],
    "$lib/*": [
        "src/lib/*"
    ]
}

执行以下命令时触发模块找不到错误:

node --experimental-specifier-resolution=node --loader ts-node/esm script.ts --project tsconfig.json

错误信息:

/home/..../node_modules/ts-node/dist-raw/node-internal-modules-esm-resolve.js:757
  throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base));
        ^
CustomError: Cannot find package '$lib' imported from script.ts.

解决方法

1. 安装路径解析工具

ts-node的ESM加载器默认不处理tsconfig中的paths别名规则,需安装tsconfig-paths来补全这一能力:

npm install -D tsconfig-paths

2. 调整启动命令

添加tsconfig-paths/esm加载器,同时修正参数顺序(--project是传递给ts-node的配置项,必须放在脚本文件名之前):

node --experimental-specifier-resolution=node --loader ts-node/esm --loader tsconfig-paths/esm --project tsconfig.json script.ts

3. 检查baseUrl配置(可选)

确保tsconfig.json的compilerOptions中已设置baseUrl,SvelteKit通常默认配置为./,若缺失需手动添加:

"compilerOptions": {
    "baseUrl": ".",
    // 其他配置项...
    "paths": {
        "$lib": ["src/lib"],
        "$lib/*": ["src/lib/*"]
    }
}

完成以上步骤后,Node.js即可正确解析$lib别名,成功导入目标模块。

内容的提问来源于stack exchange,提问作者Willem Vanhulle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 09:00:58