Ошибки сборки TypeScript - PullRequest
0 голосов
/ 06 мая 2020

Я пытаюсь преобразовать приложение Vuejs для постепенного использования Typescript и сталкиваюсь с несколькими проблемами сборки. Пакет приложения. json показывает "@vue/cli-plugin-typescript": "^4.3.1", "typescript": "^3.5.2",

Мне удалось исправить пару проблем сборки с помощью файла. создание файла .d.ts например: я исправил ошибку сборки, связанную с import VueTour from 'vue-tour'; в main.ts, создав файл vue-tour.d.ts с declare module 'vue-tour';

b. добавление // @ts-ignore перед ошибкой строки сборки. например:

// @ts-ignore
import axios from "./axios.js";

~ \ src \ ax ios. js

import axios from 'axios'
const domain = ""
export default axios.create({domain})

Вместо использования // @ts-ignore, как я могу создать .d.ts файл, чтобы исправить проблему сборки?

У меня также есть ошибки сборки, связанные с типами, сгенерированными AWS Amplify и пользовательским экземпляром маршрутизатора, который мы используем.

Каков рекомендуемый способ решения этих проблем сборки?

~ \ src \ router. js

import Vue from 'vue';
import Router from 'vue-router';
Vue.use(Router);
const router = new Router({............
});
export default router;

проблема сборки 1:

126:10 No overload matches this call.
  Overload 1 of 3, '(options?: ThisTypedComponentOptionsWithArrayProps<Vue, object, object, object, never> | undefined): CombinedVueInstance<Vue, object, object, object, Record<...>>', gave the following error.
    Argument of type '{ router: any; store: any; i18n: any; acl: any; render: (h: CreateElement) => VNode; }' is not assignable to parameter of type 'ThisTypedComponentOptionsWithArrayProps<Vue, object, object, object, never>'.
      Object literal may only specify known properties, and 'router' does not exist in type 'ThisTypedComponentOptionsWithArrayProps<Vue, object, object, object, never>'.
  Overload 2 of 3, '(options?: ThisTypedComponentOptionsWithRecordProps<Vue, object, object, object, object> | undefined): CombinedVueInstance<Vue, object, object, object, Record<...>>', gave the following error.
    Argument of type '{ router: any; store: any; i18n: any; acl: any; render: (h: CreateElement) => VNode; }' is not assignable to parameter of type 'ThisTypedComponentOptionsWithRecordProps<Vue, object, object, object, object>'.
      Object literal may only specify known properties, and 'router' does not exist in type 'ThisTypedComponentOptionsWithRecordProps<Vue, object, object, object, object>'.
  Overload 3 of 3, '(options?: ComponentOptions<Vue, DefaultData<Vue>, DefaultMethods<Vue>, DefaultComputed, PropsDefinition<Record<string, any>>, Record<...>> | undefined): CombinedVueInstance<...>', gave the following error.
    Argument of type '{ router: any; store: any; i18n: any; acl: any; render: (h: CreateElement) => VNode; }' is not assignable to parameter of type 'ComponentOptions<Vue, DefaultData<Vue>, DefaultMethods<Vue>, DefaultComputed, PropsDefinition<Record<string, any>>, Record<...>>'.
      Object literal may only specify known properties, and 'router' does not exist in type 'ComponentOptions<Vue, DefaultData<Vue>, DefaultMethods<Vue>, DefaultComputed, PropsDefinition<Record<string, any>>, Record<...>>'.
    124 | 
    125 | Vue.config.productionTip = false;
  > 126 | new Vue({router, store, i18n, acl, render: h => h(App)}).$mount('#app');
        |          ^

сборка 2:

ERROR in ~/node_modules/@aws-amplify/api-graphql/lib-esm/types/index.d.ts(3,21):
3:21 Cannot use namespace 'DocumentNode' as a type.
    1 | import { DocumentNode } from 'graphql/language/ast';
    2 | export interface GraphQLOptions {
  > 3 |     query: string | DocumentNode;
      |                     ^
    4 |     variables?: object;
    5 |     authMode?: GRAPHQL_AUTH_MODE;

tsconfig. json:

{
  "compilerOptions": {
    "target": "es5",
    "module": "esnext",
    "strict": true,
    "jsx": "preserve",
    "importHelpers": true,
    "moduleResolution": "node",
    "experimentalDecorators": 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", "src/main.ts"
  ],
  "exclude": [
    "node_modules"
  ]
}

1 Ответ

0 голосов
/ 07 мая 2020

Я добавил "skipLibCheck": true в файл tsconfig. json, чтобы исправить проблему сборки 2. Это должно быть нормально, поскольку мы не хотим проверять DocumentNode на зависимости lib.

...