找不到我的Typescript库的声明文件,即使它存在

时间:2017-09-17 10:36:43

标签: typescript typescript-declarations

我有其他question中提到的完全相同的问题,但不幸的是我无法以同样的方式解决它。

基本上我写了一个Typescript库,现在,在发布它之前,我想在本地测试它并检查它是否被正确导入。

这是我的测试项目树:

.
├── js-src
│   └── index.js
├── node_modules
│   └── response-giver -> ../../response-giver
├── package-lock.json
├── tsconfig.json
└── ts-src
    └── index.ts

您可以直接在我的仓库中查看我的模块:https://github.com/Giovarco/response-given/tree/develop

这就是我尝试更改模块上tsconfig.json以解决问题的方法:

{
    "compilerOptions": {
        "emitDecoratorMetadata" : true,
        "experimentalDecorators" : true,
        "module" : "commonjs",
        "target" : "ES5",
        "watch" : true,
        "outDir" : "js-src",
        "rootDir" : "ts-src",
        "declaration": true,
        "allowJs": false,
        "lib": [ "es2015" ],
        "typeRoots": [
            "node_modules/@types",
            "js-src/index"
        ],
        "main" : "js-src/index"

    }
}

这就是我尝试导入模块的方式:

import * as responseGiver from "response-giver";

但是我收到了这个错误:

[ts]
Could not find a declaration file for module 'response-giver'. '/home/mario/Git projects/response-giver/js-src/index.js' implicitly has an 'any' type.
  Try `npm install @types/response-giver` if it exists or add a new declaration (.d.ts) file containing `declare module 'response-giver';`

这仍然有效:

import * as responseGiver from "../node_modules/response-giver";

但是当我尝试使用它时,我没有为我的功能获得正确的签名。

2 个答案:

答案 0 :(得分:0)

你有node_modules / @ types / response-giver吗?

答案 1 :(得分:0)

这就是我解决问题的方法。基本上将"types": "js-src/index.d.ts"添加到package.json