打字稿声明文件无法在绝对路径中找到模块

时间:2020-05-22 09:05:49

标签: javascript typescript npm ecmascript-6

我正在构建一个npm模块。它可以成功构建并且也可以通过测试。

但是当我尝试通过npm install将其用作第三方模块时,其声明文件无法解析绝对路径中的子模块。

目录结构如下(忽略不相关的文件):

? moneris-checkout
 ┣ ? dist
 ┃ ┣ ? test
 ┃ ┣ ? types
 ┃ ┣ ? moneris-checkout.js
 ┃ ┗ ? moneris-checkout.d.ts
 ┣ ? src
 ┃ ┣ ? test
 ┃ ┣ ? types
 ┃ ┗ ? moneris-checkout.ts
 ┣ ? package.json
 ┗ ? tsconfig.json

Tsconfig文件如下:

{
  "compilerOptions": {
    "module": "commonjs",
    "esModuleInterop": true,
    "target": "es6",
    "moduleResolution": "node",
    "sourceMap": true,
    "baseUrl": "./src",
    "rootDir": "./src",
    "paths": {
      "src/*": ["./src/*"]
    },
    "outDir": "dist",
    "declaration": true
  },
  "lib": ["es2016"]
}

package.json类似于以下内容:

{
  "name": "moneris-checkout",
  "homepage": "https://github.com/bravemaster619/moneris-checkout",
  "main": "dist/moneris-checkout.js",
  "types": "dist/moneris-checkout.d.ts",
  "scripts": {
    "build": "tsc",
    "test": "mocha -r ts-node/register -r tsconfig-paths/register ./src/test/**/*.spec.ts --timeout 5000"
  },
  "devDependencies": {
    ...
  },
  "dependencies": {
    ...
  },
  ...
}

在主条目文件src/moneris-checkout.ts中,我这样导入模块:

import ReceiptRequestInterface from "types/receipt/request";
import PreloadResponseInterface from "types/preload/response";

就可以了。

但是在声明文件dist/moneris-checkout.d.ts中,以上代码无效。 Typescript无法从types/preload/response等中找到模块。

我在这里想念什么?

0 个答案:

没有答案