Vue+TypeScript项目中导入@lionralfs/discogs-client类型文件失败的问题求助
Vue+TypeScript项目中导入@lionralfs/discogs-client类型文件失败的问题求助
大家好,我正在开发一个Vue+TypeScript项目,最近碰到了一个导入类型文件的奇怪问题,想请各位帮忙排查下。
先贴下项目里的核心代码:
App.vue
<template> <div> <FileUpload @file="setFile" /> <ParseCsvToArray v-if="file" :file="file" /> <ProcessReleaseData /> <FetchRelease /> <DownloadCSV /> </div> </template> <script lang="ts"> import { defineComponent } from 'vue'; import FileUpload from './components/FileUpload.vue'; import ParseCsvToArray from './components/ParseCsvToArray.vue'; import ProcessReleaseData from './components/ProcessReleaseData'; import FetchRelease from './components/FetchRelease'; import DownloadCSV from './components/DownloadCSV'; export default defineComponent({ name: 'App', components: { FileUpload, ParseCsvToArray, ProcessReleaseData, FetchRelease, DownloadCSV }, data() { return { file: null as null | File, } }, methods: { setFile(file: File) { console.log("Received file:", file) this.file = file; } }, mounted() { console.log("mounted"); }, }); </script> <style></style>
ProcessReleaseData组件代码
import { type GetReleaseResponse } from '@lionralfs/discogs-client/types/types'; export default { name: 'ProcessReleaseData', methods: { processReleaseData } } export function processReleaseData(releaseId: string, data: GetReleaseResponse) { const { country = 'Unknown', genres = [], styles = [], year = 'Unknown' } = data; const artists = data.artists?.map?.(artist => artist.name); const barcode = data.identifiers.filter(id => id.type === 'Barcode').map(barcode => barcode.value); const catno = data.labels.map(catno => catno.catno); const uniqueCatno = [...new Set(catno)]; const descriptions = data.formats.map(descriptions => descriptions.descriptions); const format = data.formats.map(format => format.name); const labels = data.labels.map(label => label.name); const uniqueLabels = [...new Set(labels)]; const qty = data.formats.map(format => format.qty); const tracklist = data.tracklist.map(track => track.title); // const delimiter = document.getElementById('delimiter').value || '|'; const delimiter = '|'; const formattedBarcode = barcode.join(delimiter); const formattedCatNo = uniqueCatno.join(delimiter); const formattedGenres = genres.join(delimiter); const formattedLabels = uniqueLabels.join(delimiter); const formattedStyles = styles.join(delimiter); const formattedTracklist = tracklist.join(delimiter); const preformattedDescriptions = descriptions.toString().replace('"', '""').replace(/,/g, ', '); const formattedDescriptions = '"' + preformattedDescriptions + '"'; const formattedData: any[] = [ releaseId, artists, format, qty, formattedDescriptions, formattedLabels, formattedCatNo, country, year, formattedGenres, formattedStyles, formattedBarcode, formattedTracklist ]; return formattedData; }
启动项目时我遇到了如下错误:
Internal server error: Failed to resolve import "@lionralfs/discogs-client/types/types" from "src/components/ProcessReleaseData.ts". Does the file exist?
我检查了项目的tsconfig.app.json配置,看起来没有问题:
{ "extends": "@vue/tsconfig/tsconfig.dom.json", "include": ["env.d.ts", "src/**/*", "src/**/*.vue", "csv.ts", "src/**/*.ts"], "exclude": ["src/**/__tests__/*"], "compilerOptions": { "composite": true, "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", "baseUrl": ".", "paths": { "@/*": ["./src/*"] } } }
而且我确认这个类型文件是存在的——VSCode里能正常识别到它的类型定义,甚至同一个目录下的另一个文件里,import { DiscogsClient } from '@lionralfs/discogs-client';这种导入完全没问题,唯独导入这个类型文件就报错。
有没有朋友遇到过类似的情况?求各位给点思路,谢谢大家!
备注:内容来源于stack exchange,提问作者double-happiness
相关产品推荐
相关产品推荐

