TypeScript не может найти модуль npm с включенными типами .d.ts (веб-пакет с ts-загрузчиком) - PullRequest
0 голосов
/ 17 февраля 2019

Я пытаюсь импортировать библиотеку Konva в мой проект TypeScript + webpack, но компилятор не может найти модуль, не указав его непосредственно в node_modules.

.это не пакет DefinitiveTyped для Konva, файл .d.ts уже включен в пакет npm.Я могу импортировать другой пакет npm, который имеет имеет запись DefiniteTyped так, как я ожидал.

Я попытался добавить .d.ts к своему resolve.extentions вwebpack.config.js, но это тоже не помогло.Я обнаружил эти проблемы на их github , но оба они были помечены как закрытые.

Структура каталогов

node_modules/
    '-- @types/
        '-- tesseract.js/
            '-- index.d.ts
            '-- package.json
            '-- types-metadata.json
    '-- konva/
        '-- src/
        '-- konva.d.ts
        '-- konva.js
        '-- konva.min.js
        '-- package.json
    '-- tesseract.js/
        '-- dist/
        '-- src/
        '-- package.json
src/
    '-- index.ts
package.json
package-lock.json
tsconfig.json
webpack.config.js

Единственное заметное отличие, которое я смог найти, заключалось в том, что у Konva нет файла types-metadata.json.Может ли это быть проблемой?Не удалось найти никакой документации по этому файлу.

index.ts

import * as Konva from 'konva' //this errors
import * as Tesseract from 'tesseract.js'; //this works fine
//import * as Konva from '../node_modules/konva/konva' this 'works' too
...

webpack.config.js

const path = require('path');

module.exports = {
    entry: './src/index.ts',
    devtool: 'source-map',

    output: {
        filename: 'main.js',
        path: path.resolve(__dirname, 'dist'),
    },

    resolve: {
        extensions: [ '.ts', '.tsx', '.js']
    },

    module: {
        rules: [
            { test: /\.ts$/, use: 'ts-loader' },
        ]
    },
    ...
};

package.json

{
    ...
    "devDependencies": {
        "ts-loader": "^5.3.3",
        "typescript": "^3.3.3",
        "webpack": "^4.29.4",
        "webpack-cli": "^3.2.3"
    },
    "dependencies": {
        "@types/tesseract.js": "0.0.2", //this library is working perfectly
        "tesseract.js": "^1.0.14"
        "konva": "^2.6.0", //this one isn't
    }
    ...
}

tsconfig.json

{
    "compileOnSave": true,

    "compilerOptions": {
        "target": "es2016",
        "sourceMap": true,

        "strict": true,
        "alwaysStrict": true,
        "strictNullChecks": true,
        "strictFunctionTypes": true,
        "strictBindCallApply": true,
        "strictPropertyInitialization": true,

        "noImplicitAny": true,
        "noImplicitThis": true,
        "noImplicitReturns": true,
        "noFallthroughCasesInSwitch": true,

        "forceConsistentCasingInFileNames": true,
    }
}
...