首页 > 解决方案 > TypeScript - 从自定义位置导入模块(非相对)

问题描述

假设我有以下目录结构:

- functions
   - functionOne
      - tsconfig.json
      - index.ts
      - package.json
      - node_modules
- layers
   - layerOne
      - tsonfig.json
      - index.ts
      - index.js (compiled index.ts)
      - package.json
      - node_modules

functions/functionOne/index.ts我试图这样导入layerOne

import JenkinsCredentials from '@prefix/module-name';

现在,我知道 TypeScript 会像“到底是什么@prefix/module-name。所以,在里面tsconfig.json我放了以下内容:

  "baseUrl": ".",
  "paths": {
    "@prefix/module-name": ["../../layers/layerOne"] 
  }

但是,这似乎不起作用。我收到以下错误:

Cannot find module '@prefix/module-name' or its corresponding type declarations.ts(2307)

我认为设置baseURLandpaths会对此有所帮助吗?我在做什么错/我需要做什么才能让 TypeScript 将自定义模块名称映射@prefix/module-name到目录"../../layers/layerOne"

注意:自定义名称的原因是 Lambda 层以这种方式引用。

标签: javascriptnode.jstypescriptamazon-web-servicesaws-lambda

解决方案


paths关键字被认为.是文件的路径tsconfig.json

您需要设置path为:

  "baseUrl": ".",
  "paths": {
    "@prefix/module-name": ["./layers/layerOne"] 
  }

所以不管你import JenkinsCredentials from '@prefix/module-name';从哪里调用,它总是会产生同一个文件。


推荐阅读