如何防止我的 Vue 构建由于 Typescript 错误而失败

Posted

技术标签:

【中文标题】如何防止我的 Vue 构建由于 Typescript 错误而失败【英文标题】:How to prevent my Vue build to fail because of Typescript errors 【发布时间】:2020-11-04 19:45:37 【问题描述】:

正如标题所说。我有一个使用下面的.eslintrc.js 文件运行的项目,我希望将 Typescript 错误的严重性默认为警告,因为这会阻止我的构建。我找不到有关如何定位适当规则“defaultSeverity”的参考。

我的主要目标是防止构建由于 TS 错误而失败。如果有不同的方法可以做到这一点,很高兴知道如何做到这一点。

编辑说明:我得到的错误是访问未在类型 AxiosResponse 预期响应中定义的对象属性。在我定义自己的类型或类似的东西之前,我宁愿忽略这些错误。

module.exports = 
  root: true,
  env: 
    node: true
  ,
  extends: [
    'plugin:vue/essential',
    'eslint:recommended',
    '@vue/typescript/recommended',
    '@vue/prettier',
    '@vue/prettier/@typescript-eslint'
  ],
  plugins: ['vue'],
  parserOptions: 
    ecmaVersion: 2020
  ,
  rules: 
    'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
    'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
    'prettier/prettier': ['warn',  singleQuote: true, semi: false ],
    'no-trailing-spaces': 'error'
  


【问题讨论】:

如何纠正错误? 你到底得到了什么错误?您无法编译有错误的脚本... 错误是关于 AxiosResponse 没有我正在访问的这个属性。但是因为我知道我有道具,所以我现在不想处理这种类型的错误,我会得到一个警告,直到我的类型都被稍后定义。由于 TS 对我来说是新的,我宁愿不处理不匹配类型错误并逐步改进我的类型定义。 另外,我可以轻松地将响应强制为“任何”并覆盖错误。但我不希望看到这些类型的错误阻止任何东西。因为我的 TS 目标更倾向于尽可能少地添加并随着时间的推移而增长。 您找到解决方案了吗? 【参考方案1】:

最好尽可能多地定义类型。即使您将类型设置为“任何”。但要回复我自己的答案,可以通过在tsconfig.json 文件中设置选项"noImplicitAny": false, 来避免编译器错误。

tsconfig.json 文件示例:


  "compilerOptions": 
    "target": "esnext",
    "module": "esnext",
    "strict": true,
    "jsx": "preserve",
    "importHelpers": true,
    "moduleResolution": "node",
    "esModuleInterop": true,
    "allowSyntheticDefaultImports": true,
    "noImplicitAny": false,
    "sourceMap": true,
    "baseUrl": ".",
    "types": [
      "webpack-env",
      "vuetify"
    ],
    "paths": 
      "@/*": [
        "src/*"
      ]
    ,
    "lib": [
      "esnext",
      "dom",
      "dom.iterable",
      "scripthost"
    ]
  ,
  "include": [
    "src/**/*.ts",
    "src/**/*.tsx",
    "src/**/*.vue",
    "tests/**/*.ts",
    "tests/**/*.tsx"
  ],
  "exclude": [
    "node_modules"
  ]

【讨论】:

以上是关于如何防止我的 Vue 构建由于 Typescript 错误而失败的主要内容,如果未能解决你的问题,请参考以下文章

Vue.js:如何防止 `vue-cli-service --modern` 构建遗留​​包?

Vue CLI 3 防止某些输出文件的缓存破坏

使用电容器在iOS应用构建中滚动时如何防止内容显示在安全区域上方?

如何防止我的表单在 Vue.js 中使用 Enter 键提交?

如何在Vue中防止UI框架中的全局css样式

实现 CSS:导航栏由于侧导航而崩溃 - 如何防止?