You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 12:42:57