Webpack resolve.alias中断了以@开头的库的导入

时间:2019-05-18 18:09:51

标签: vue.js webpack babeljs

我正在一个Vue项目中尝试使用VuexORM。初始安装时,出现一个奇怪的错误: Module not found: Error: Can't resolve '../uex-orm/core'

它应该改为../@vuex-orm/core(注意,它缺少@和'v'字符)。

我仔细检查了我没有输入错误的进口商品。然后我意识到我已经实现了一个别名,以便可以使用@符号从src /目录导入,我相信这可以解释看上去很奇怪的导入。我一定对我的webpack或.babelrc进行了错误配置(这很可能是因为我俩都很烂)。

我应该如何设置webpack.config.js和/或.babelrc,以便既可以为导入使用别名,又可以使用诸如@ vuex-orm之类的导入库?

webpack.config.js

const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const Dotenv = require('dotenv-webpack');

module.exports = {
  mode: 'development',
  resolve: {
    extensions: ['.js', '.vue'],
  },
  module: {
    rules: [
      {
        test: /\.vue?$/,
        exclude: /(node_modules)/,
        use: 'vue-loader',
      },
      {
        test: /\.js?$/,
        exclude: /(node_modules)/,
        use: 'babel-loader',
      },
      {
        test: /\.css$/,
        use: [{ loader: 'style-loader' }, { loader: 'css-loader' }],
      },
      {
        test: /\.sass$/,
        use: [
          'vue-style-loader',
          'css-loader',
          {
            loader: 'sass-loader',
            options: {
              indentedSyntax: true,
            },
          },
        ],
      },
      {
        test: /\.svg$/,
        loader: 'svg-inline-loader',
      },
    ],
  },
  plugins: [
    new HtmlWebpackPlugin({
      template: './src/index.html',
    }),
    new Dotenv(),
  ],

  devServer: {
    historyApiFallback: true,
  },
  externals: {
    // global app config object
    config: JSON.stringify({
      apiUrl: 'http://localhost:3000',
    }),
  },
}

.babelrc

{
  "presets": [
      "env",
      "stage-0"
  ],
  "plugins": [
    ["babel-plugin-root-import", {
      "rootPathSuffix": "src/",
      "rootPathPrefix": "@"
    }]
  ]
}

1 个答案:

答案 0 :(得分:0)

我再次浏览了babel-plugin-root-import的文档,或者错过了它,或者最近对其进行了编辑,但是他们提到:

  

如果您不喜欢〜语法,则可以使用自己的符号(对于   例如#符号或\或您想要的任何符号)。使用@不是   推荐使用,因为NPM的最新版本在包名称中允许@。 〜是   默认值,因为它不太可能与任何内容发生冲突(并且   无论如何都不会扩展到HOME。

因此,将导入从@/_components/User'更改为~/_components/User是可行的!

希望这对其他人有帮助!