Language-tools: لم يتم حل الاسم المستعار

تم إنشاؤها على ٢٠ أغسطس ٢٠٢٠  ·  10تعليقات  ·  مصدر: sveltejs/language-tools

صف الخلل
لقد استخدمت استيراد الاسم المستعار @/ وقد نجح الأمر. ثم قمت بالتبديل إلى Vite وهو يدعم الأسماء المستعارة الجذر فقط. لذلك قمت بتبديل الكود الخاص بي لاستخدام الأسماء المستعارة /@/ . إنه يجمع ويعمل في المتصفح ، لكنه يعطيني خطأ في vscode:

image

لإعادة إنتاج
استخدم استيراد /@/

سلوك متوقع
كل شيء يعمل

النظام (يرجى استكمال المعلومات التالية):

  • نظام التشغيل: أوبونتو
  • IDE: VSCode
  • المكون الإضافي / الحزمة: "Svelte for VSCode"
Fixed bug question

التعليق الأكثر فائدة

تكمن المشكلة داخل module-loader ، الذي يفوض إلى دقة TS العادية لأن التحقق من "هو المسار المطلق" صحيح (مسارات الملفات التي تبدأ بـ / مطلقة في نظام linux). أعتقد أننا بحاجة إلى فحوصات إضافية لـ "هل هذا جزء من البادئة من مسارات tsconfig".

ال 10 كومينتر

سيتعين عليك أيضًا تكوين الاسم المستعار للطباعة على الرغم من tsconfig / jsconfig.json

https://www.typescriptlang.org/docs/handbook/module-resolution.html#path -mapping

أواجه أيضًا نفس المشكلة التي يمكن أن يجمعها tsc ما يرام. ومع ذلك ، لن تتمكن أدوات مثل svelte-check من حل مسار الاسم المستعار بشكل صحيح وإلقاء أخطاء مثل OP. يبدو أن هناك خطأ متعلق بـ language-tools غير قادر على حل tsconfig.json في مجلد المشروع بشكل صحيح؟

Screenshot 2020-08-21 at 13 06 57

هذا الخطأ لأننا استخدمنا بعض الخصائص الخاصة التي تم حقنها بواسطة svelte2tsx للقيام بفحص نوع المكون. إذا لم نتمكن من العثور على الملف الفعلي ، فلن نتمكن من تحويل الملف باستخدام svelte2tsx.

cayter أين تضع tsconfig الخاص بك؟

@ jasonlyu123 يوجد أدناه بنية مجلد مشروعي والتي تصادف أنها monorepo لكل من الواجهة الخلفية / الواجهة الأمامية:

.
├── Makefile
├── README.md
├── database
│   └── database.rules.json
├── firebase.json
├── firestore
│   ├── firestore.indexes.json
│   └── firestore.rules
├── functions // backend code
│   ├── package-lock.json
│   ├── package.json
│   ├── src
│   │   └── index.ts
│   └── tsconfig.json
├── hosting // frontend PWA code
│   ├── ...
│   ├── src
│   │   ├── components
│   │   │   ├── App.svelte
│   │   │   └── ...
│   │   ├── images
│   │   │   ├── cover.png
│   │   │   └── ...
│   │   ├── index.css
│   │   ├── index.ts
│   │   ├── pages
│   │   │   ├── Auth
│   │   │   │   └── ...
│   │   │   ├── Error
│   │   │   │   └── ...
│   │   │   ├── Home
│   │   │   │   └── ...
│   │   │   └── User
│   │   │       └── ...
│   │   └── stores
│   │       └── ...
│   ├── svelte.config.js
│   ├── tailwind.config.js
│   ├── tsconfig.json
│   ├── vite.config.ts
│   └── workbox.config.js
├── package-lock.json
└── package.json

استضافة / tsconfig.json

{
  "compilerOptions": {
    "allowSyntheticDefaultImports": true,
    "baseUrl": "src",
    "declaration": true,
    "emitDecoratorMetadata": true,
    "esModuleInterop": true,
    "experimentalDecorators": true,
    "forceConsistentCasingInFileNames": true,
    "importHelpers": true,
    "importsNotUsedAsValues": "error",
    "isolatedModules": true,
    "lib": ["dom", "esnext", "es6"],
    "module": "esnext",
    "moduleResolution": "node",
    "noEmit": true,
    "noImplicitAny": true,
    "noImplicitReturns": true,
    "noImplicitThis": true,
    "rootDir": "src",
    "skipLibCheck": true,
    "sourceMap": true,
    "strict": true,
    "strictBindCallApply": true,
    "strictFunctionTypes": true,
    "strictPropertyInitialization": true,
    "strictNullChecks": true,
    "target": "esnext",
    "types": ["jest", "node", "svelte"],
    "paths": {
      "/@/*": ["*"]
    }
  },
  "include": ["src/**/*"],
  "exclude": ["node_modules/*", "public/*"]
}

إذا لم نتمكن من العثور على الملف الفعلي ، فلن نتمكن من تحويل الملف باستخدام svelte2tsx.

نعم ، هذا يتعلق بحل مسار الاسم المستعار المحدد في tsconfig.json للمشروع لم يتم تكريمه. لذلك ، إذا قمنا بتغييره إلى مسار نسبي بدلاً من استخدام مسار الاسم المستعار ، فلن يؤدي امتداد vscode وفحص svelte إلى ظهور أي خطأ بعد الآن يمكنك رؤيته من لقطة شاشة OP للمكون ComboBox .

يمكنك التحقق من قناة الإخراج من vscode ، اختر svelte في القائمة المنسدلة على اليمين. ومعرفة ما إذا كان لديك شيء من هذا القبيل
Initialize new ts service at c:/Current Projects/svelte-app/tsconfig.json وانشر السجل هنا.

يمكنني إعادة إنتاج هذا. لسبب ما ، يمكن أن يتعامل getDefinitionAndBoundSpan مع ملفات TS / JS المستوردة من هذه المواقع ، ولكن ليس مع ملفات .svelte .

تكمن المشكلة داخل module-loader ، الذي يفوض إلى دقة TS العادية لأن التحقق من "هو المسار المطلق" صحيح (مسارات الملفات التي تبدأ بـ / مطلقة في نظام linux). أعتقد أننا بحاجة إلى فحوصات إضافية لـ "هل هذا جزء من البادئة من مسارات tsconfig".

قال OP في الواقع إنه يعمل مع @/ وقد فاتني ذلك. آسف 😅

لقد نسيت أن أقول كم أنت رائع يا رفاق. شكرا للاستجابة السريعة

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات