node.js - Javascript მოდულის გამოყენება Typescript Vue პროექტში
პრობლემა
მეც ვცდილობ ვიყო https://github.com/moonwave99/fretboard.js ჩემს Vue პროექტში. ვცდილობ მოდულის იმპორტირება კომპონენტში შემდეგნაირად:
<template>
<div>
<div id="fretboard" />
</div>
</template>
<script lang="ts">
import { Fretboard } from '@moonwave99/fretboard.js';
const fretboard = new Fretboard({
el: '#fretboard',
fretColor: 'blue',
dotFill: 'red'
});
fretboard.render([
{
string: 5,
fret: 3
},
{
string: 4,
fret: 2
},
{
string: 2,
fret: 1
}
]);
</script>
ეს მიიღება შემდეგი შეცდომის შედეგად:
Could not find a declaration file for module '@moonwave99/fretboard.js'. '/Users/xxx/guitar-apps/node_modules/@moonwave99/fretboard.js/dist/fretboard.cjs.js' implicitly has an 'any' type.
Try `npm install @types/moonwave99__fretboard.js` if it exists or add a new declaration (.d.ts) file containing `declare module '@moonwave99/fretboard.js';`Vetur(7016)
მე ვცადე npm install @types/moonwave99__fretboard.js ბრძანების გაშვება, მაგრამ ეს ასევე გამოიწვია შეცდომა, სადაც ეწერა '@types/moonwave99__fretboard.js@latest' npm რეგისტრში არ არის.
მე ყველგან ვეძებე, მაგრამ ვერ ვიპოვნე ისეთი გადაწყვეტილება, რომელიც ჩემს პროექტზე ვარგიანობდა. არის ვინმე იქ, ვისაც აქვს ჩემი პრობლემის გადაწყვეტა?
რაღაცეები, რასაც მოვინახულე
- განუწყვეტელი ფაილის შექმნა, რომელიც შეიცავს
declare module '@moonwave99/fretboard.js'ჩემს პროექტის დირექტორიის ძირეულში - ჩასმა
"allowJs": trueჩემს tsconfig.ts ფაილში
დამატებითი ინფორმაცია
ჩემი tsconfig ეგვგავს ასე:
{
"compilerOptions": {
"target": "esnext",
"module": "esnext",
"strict": true,
"jsx": "preserve",
"allowJs": true,
"importHelpers": true,
"moduleResolution": "node",
"experimentalDecorators": true,
"skipLibCheck": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"sourceMap": true,
"baseUrl": ".",
"types": [
"webpack-env",
"jest"
],
"paths": {
"@/*": [
"src/*"
]
},
"lib": [
"esnext",
"dom",
"dom.iterable",
"scripthost"
]
},
"include": [
"src/**/*.ts",
"src/**/*.tsx",
"src/**/*.vue",
"tests/**/*.ts",
"tests/**/*.tsx"
],
"exclude": [
"node_modules"
]
}
პასუხი #1
.d.ts ფაილი აუცილებლად უნდა იყოს tsconfig.json-ში კონფიგურირებული რომელიმე include ბილიკში, და თქვენი გამოქვეყნებული tsconfig.json-ის მიხედვით, ეს არის src ან tests. ეს ტიპები ჩვეულებრივ ინახება src ფოლდერის ძირეულ დირექტორიაში (თქვენ დაინახავთ src/shims.vue.d.ts Vue CLI-თი შექმნილ პროექტში).
თქვენ შეგიძლიათ დაამატოთ src/fretboard.d.ts ფაილი, რომელიც შეიცავს declare module '@moonwave99/fretboard.js'. შემდეგ, თქვენ გიწევთ VS Code-ის გადატვირთვა, რათა ტიპები სწორად იქნას ინდექსირებული, რაც გამოასწორებს შეცდომას.
პასუხი #2
გაჭრა ფაილში src/.env.d.ts დაამატეთ declare module 'vue-image-zoomer'.
ყველაფერი დასრულებულია. გაქრა მოდულის არ არსებობს შეცდომა.
ბედნიერი კოდირება.