vue-cli3是个好东西,但是好东西也有不完美的地方。
在使用的过程中,遇到了一些莫名其妙或因姿势不对出现的error,在这里记录下来。也算是前人栽树,后人乘凉。

设置别名 alias 的注意事项

在根目录新建vue.config.js

const path = require("path");

function resolve(dir) {
  return path.join(__dirname, dir);
}
module.exports = {
  configureWebpack: {
    resolve: {
      alias: {
        "@": resolve("src")
      }
    }
  }
};
复制代码

App.vue文件中使用@别名

import HelloWorld from "@/components/HelloWorld";
复制代码

编译后终端报错如下:

 ERROR  Failed to compile with 1 errors                                                                                                                                                                20:49:36

 error  in ./src/App.vue

Module Error (from ./node_modules/eslint-loader/index.js):
error: Missing file extension for "@/components/HelloWorld" (import/extensions) at src/App.vue:11:24:
   9 |
  10 | <script>
> 11 | import HelloWorld from "@/components/HelloWorld";

复制代码

这是因为eslint-loader不能解析@的缘故

安装eslint-import-resolver-webpack并配置

yarn add eslint-import-resolver-webpack -D
复制代码

package.json或者.eslinttrc.js设置如下:

module.exports = {
  root: true,
  'settings': {
    "import/resolver": {
      "webpack": {
        "config": "node_modules/@vue/cli-service/webpack.config.js"
      }
    }
  }
}
复制代码

至此即可解决上面的报错


eslint rule import/extensions引起的错误提示

import/extensions 介绍

当设置了如下规则时:

/* .eslinttrc.js */

module.exports = {
  root: true,
  'settings': {
    "import/resolver": {
      "webpack": {
        "config": "node_modules/@vue/cli-service/webpack.config.js"
      }
    }
  },
  rules: {
    'import/extensions': ['error', 'always', {
      'js': 'never',
      'vue': 'never'
    }]
  }
}
复制代码

引入的文件出现错误提示(编辑器vscode)

开发环境:macOS Sierra 10.12.6

[eslint] Missing file extension for "@/components/HelloWorld"
复制代码

这个原因找了半天,都没找到。最后鬼使神差的发现原来是项目的路径太深导致的。真是太过奇葩!

转载于:https://juejin.im/post/5c85dd0d5188257e5b2be38b

Logo

前往低代码交流专区

更多推荐