首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >类型记录路径映射在节点应用程序中未被翻译

类型记录路径映射在节点应用程序中未被翻译
EN

Stack Overflow用户
提问于 2017-12-20 20:12:09
回答 1查看 2.6K关注 0票数 8

当前在node.js应用程序中使用类型记录。我已经编译了我的应用程序,我正在使用类型记录路径映射特征

‘'api/*’应该在根文件夹中查找。在开发工作中使用以下内容:

代码语言:javascript
复制
nodemon --watch src -e ts,tsx --exec ts-node -r tsconfig-paths/register --disableWarnings ./src/index.ts

tsconfig-paths/register允许正确翻译需求,ts节点将正确执行/运行应用程序。现在,当我转移到生产部门时,问题就会发生。在过去的生产中,我只是在文件夹上运行tsc,并将outDir (dist/)的内容移到outDir映像中的/app中,然后运行node /app/index.js。在我开始使用类型记录的路径映射功能之前,这种方法一直有效。现在我只得到一个错误:

错误:找不到模块‘api/模块/路径/这里’

这个github评论中,显然没有将模块名映射到输出编译的javascript。

我的tsconfig.json文件:

代码语言:javascript
复制
{
    "compilerOptions": {
      "target": "es2015",
      "module": "commonjs",
      "moduleResolution": "node",
      "allowSyntheticDefaultImports": true,
      "jsx": "react",
      "allowJs": true,
      "alwaysStrict": true,
      "sourceMap": true,
      "forceConsistentCasingInFileNames": true,
      "noFallthroughCasesInSwitch": true,
      "noImplicitReturns": true,
      "noUnusedLocals": true,
      "noUnusedParameters": true,
      "noImplicitAny": false,
      "noImplicitThis": false,
      "strictNullChecks": false,
      "experimentalDecorators": true,
      "emitDecoratorMetadata": true,
      "lib": ["es2017", "dom"],
      "baseUrl": "src",
      "outDir": "dist",
      "types": [
        "node"
      ],
      "paths": {
        "universal/*": ["../../universal/*"],
        "api/*": ["*"],
        "*": ["node_modules/*"]
      },
      "typeRoots": [
        "./node_modules/@types",
        "./src/types"
      ]
    },
    "include": [
      "src/**/*"
    ]
}

在node.js环境中使用相对路径映射的推荐方法是什么?如果打字本是解决问题的人,为什么不重写要求语句呢?像babel或webpack这样的另一个步骤,仅仅为了增加类型记录提供的模块分辨率的功能,感觉很傻。

编辑:经过进一步的挖掘,我发现我可以在我的节点环境中使用-r tsconfig-paths/register (我只需要在我的tsconfig.json文件中复制)。我可以把码头的入口点改为:

代码语言:javascript
复制
ENTRYPOINT [ "node", "-r", "tsconfig-paths/register", "index.js" ]

问题是,我现在需要修改我的tsconfig.json baseUrl,因为目录src/不存在。此外,我还注意到,这个解决方案并不适用于模块“util”(它显然是在我的node_modules文件夹中使用util而不是node.js util库),这导致了我的应用程序崩溃。

EN

回答 1

Stack Overflow用户

发布于 2017-12-29 00:17:02

根据您提供的源,您可能可以使用(例如,将最后一条路径解析为第一条路径):

代码语言:javascript
复制
"rootDirs": [
      "src/api/module/path/here",
      "api/module/path/here"
    ]

问题是,我现在需要修改我的tsconfig.json baseUrl,因为src/目录不存在。

类型记录路径映射特征声明:

rootDirs的灵活性不限于指定逻辑合并的物理源目录列表。所提供的数组可以包含任意数量的临时目录名称,无论它们是否存在。这允许编译器以一种类型安全的方式捕获复杂的捆绑和运行时特性,例如条件包含和特定于项目的加载程序插件。

另外,您是否尝试过跟踪模块解析:tsc -trace分辨率

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

https://stackoverflow.com/questions/47913699

复制
相关文章

相似问题

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