Я пытаюсь импортировать библиотеку 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,
}
}