【问题标题】:How to set custom node_modules path with typescript如何使用打字稿设置自定义 node_modules 路径
【发布时间】:2020-07-29 17:11:53
【问题描述】:

我开始在 TypeScript 中开发 AWS Lambda 函数。我希望node_modules 目录位于子目录中,以便能够管理层中的所有依赖项。所以我有以下结构:

- dependencies/            <- This will be my layer
  - nodesjs/
    - node_modules/
      ...
  - my_own_dependencies/
    ...
- src
  - blabla.ts

我对@9​​87654323@ 使用相对导入,效果很好。

但我无法让tsc 导入节点模块,无论模块是什么,我总是得到error TS2307: Cannot find module 'xxxx'。使用相对导入也无济于事,因为如果一个模块本身依赖于另一个模块,仍然会抛出错误。

我在tsconfig.json 中尝试了compilerOptions 参数(baseUrlpathsrootDirs)的各种组合,但它们都没有真正起作用。

现在我的 tsconfig.json 看起来像这样:

{
  "compilerOptions": {
    "target": "es2019",
    "module": "commonjs"
    "strict": true,
    "moduleResolution": "node",
    "baseUrl": ".",
    "paths": {
      "*": [
        "dependencies/nodejs/node_modules"
      ]
    },
    "forceConsistentCasingInFileNames": true
  }
}

编辑:运行tsc --traceResolution blah/blah.ts 输出以下内容:

Module resolution kind is not specified, using 'NodeJs'.
Loading module 'xxx' from 'node_modules' folder, target file type 'TypeScript'.
Directory '/path/to/blah/node_modules' does not exist, skipping all lookups in it.
File '/path/to/node_modules/xxx.ts' does not exist.
...
And so on until:
Directory '/node_modules' does not exist, skipping all lookups in it.

奇怪的是它说模块解析类型是未定义的,而在tsconfig.json...中明确定义为“节点”...

感谢您的帮助!

【问题讨论】:

    标签: typescript aws-lambda node-modules aws-lambda-layers


    【解决方案1】:

    好的,原来tsconfig.json在指定要编译的特定源文件时被忽略,可能我在文档中错过了...使用Webpack或只是运行tsc时一切最终都很好。

    我最终得到了以下tsconfig.json 文件:

    {
      "compilerOptions": {
        "target": "es2019",
        "module": "commonjs",
        "alwaysStrict": true,
        "noUnusedLocals": true,
        "noUnusedParameters": true,
        "noImplicitReturns": true,
        "moduleResolution": "node",
        "baseUrl": "./dependencies/nodejs/node_modules",
        "esModuleInterop": true,
        "forceConsistentCasingInFileNames": true
      },
      "include": [
        "**/*.ts"
      ],
      "exclude": [
        "dependencies/nodejs/node_modules",
        "**/*.spec.ts"
      ]
    }
    

    【讨论】:

      猜你喜欢
      • 2019-06-14
      • 1970-01-01
      • 2017-03-13
      • 2017-11-11
      • 2022-01-25
      • 2018-03-17
      • 2016-06-10
      • 2019-11-19
      • 2021-11-24
      相关资源
      最近更新 更多