首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >tsconfig中的绝对路径不起作用

tsconfig中的绝对路径不起作用
EN

Stack Overflow用户
提问于 2020-09-04 16:31:34
回答 4查看 10.5K关注 0票数 6

我看到了一些关于这个问题的问题,没有一个不起作用--我有一个nodejs项目和类型记录。我不喜欢使用相对路径,当我在tsconfig中设置路径时,会得到以下错误:

找不到模块“@app/controllers/main”

代码语言:javascript
运行
复制
// main.ts
export const fullName = "xxxx";
...

// app.ts
import { fullName } from '@app/controllers/main'
...

这是我的项目的结构:

代码语言:javascript
运行
复制
-node_modules
-src
----controllers
---------------main.ts
----app.ts
-package.json
-tsconfig.json

tsconfig:

代码语言:javascript
运行
复制
{
    "compilerOptions": {
        "target": "es5",
        "module": "commonjs",
        "strict": true,
        "baseUrl": ".",
        "paths": {
            "@app/*": ["src/*"]
        },
        "esModuleInterop": true,
        "skipLibCheck": true,
        "forceConsistentCasingInFileNames": true
    }
}

我的问题在哪里?

提前谢谢。

EN

回答 4

Stack Overflow用户

发布于 2020-09-04 17:02:49

不幸的是(我不知道为什么),类型记录编译器目前不支持转换路径。

这是我的解决方案:

我在项目中使用了该解决方案。

安装devDependencies

  1. 打字本 -> npm安装TypeScript-save-dev -> ttypescript (变压器TypeScript)通过动态修补编译模块以使用来自tsconfig.json的变压器来解决问题。
  2. 类型转换路径 -> npm安装类型记录-转换路径-保存- ->将绝对导入转换为相对于tsconfig.json中的路径。
  3. tsconfig-路径 -> npm安装tsconfig-paths -save ->,使用它加载在tsconfig.json的paths部分中指定位置的模块。支持在运行时和通过API加载.
  4. 节点-dev -> npm安装ts- node dev-save-dev ->当任何所需文件更改(作为标准节点-dev)时重新启动目标节点进程,但在重新启动之间共享类型记录编译过程。

tsconfig.json

使用以下选项更新tsconfig.json文件:

代码语言:javascript
运行
复制
{
    "compilerOptions": {
        /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */
        "paths": {
            "@app/*": [
                "./src/*"
            ]
        },
        /* Advanced Options */
        "plugins": [
            {
                "transform": "typescript-transform-paths"
            }
        ],
    }
}

构建

对于编译阶段,使用ttsc代替配置文件的tsc。请参阅下面的片段:

代码语言:javascript
运行
复制
npx ttsc --p ./tsconfig.json

自动重装的开发模式

当您处于dev模式时,使用下面的脚本(将其放在package.json中的脚本选项中)自动重新加载项目,其中包含正确的路径。src/app.ts是位于src文件夹下的应用程序的“入口点”。

代码语言:javascript
运行
复制
npx ts-node-dev --prefer-ts true --no-notify -r tsconfig-paths/register --watch src --transpileOnly src/app.ts

PS:使用ts节点开发显着地提高了速度。

票数 12
EN

Stack Overflow用户

发布于 2021-09-24 03:48:15

我稍微调整一下@Carlo Corradini的回答,这是我解决这个问题的方法。

  1. 安装所需的插件:npm i -D ttypescript typescript-transform-paths ts-node tsconfig-paths。这些包将帮助我们转换路径。 ttypescript> https://www.npmjs.com/package/ttypescript
  2. 然后,在tsconfig.json上,我说: { " ts-node ":{ "transpileOnly":true,"require"://设置这一点,这样您就不需要使用ts-节点-r“类型记录-转换-路径/寄存器”、“tsconfig-路径/寄存器”}、"compilerOptions":{“复合”:true、"rootDir":".“、//必须定义"baseUrl":"src”、//必须定义,路径将相对于这个"outDir":"lib“、"skipLibCheck":false、”path“:{ "@app/*":"./*”、"@controllers/*":"./controllers/*“、}、"plugins":{ "transform":”typescript-transform-path“}
  3. 然后你可以在你的密码上使用: 从"@controllers/main.ts“导入myControllers
  4. 现在你可以编译了,npx ttsc -p tsconfig.json
  5. 并使用npx ts-node -p tsconfig.json src/app.ts在ts节点上运行。
票数 6
EN

Stack Overflow用户

发布于 2020-09-04 16:43:34

你的语法是正确的。

在编写本报告时,ts-node-dev似乎不支持tsconfig.jsonpaths条目。

这个github问题讨论了这个问题,并给出了解决方案。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63744943

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档