![](/img/trans.png)
[英]Is there a correct way to use a JavaScript module in a TypeScript project?
[英]Using Javascript module in Typescript Vue project
問題
我正在嘗試在我的 Vue 項目中使用https://github.com/moonwave99/fretboard.js 。 我嘗試按如下方式在組件中導入模塊:
<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' is not in the npm registry.
.
我一直在到處尋找,但找不到適合我的項目的解決方案。 有誰能解決我的問題嗎?
我試過的事情
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"
]
}
.d.ts
文件應該在tsconfig.json
配置的include
路徑之一中,根據您發布的tsconfig.json
,這是src
或tests
。 這些類型通常存儲在src
根目錄中(您將在 Vue CLI 生成的項目中看到src/shims.vue.d.ts
)。
您可以添加一個src/fretboard.d.ts
文件,其中包含declare module '@moonwave99/fretboard.js'
。 然后,您必須重新啟動 VS Code ,以便正確索引類型,這將解決錯誤。
通過在文件src/.env.d.ts
添加declare module 'vue-image-zoomer'
。
全部做完。 消失了模塊未找到的錯誤。
快樂的編碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.