Webpack resol.alias прерывает импорт библиотек с префиксом @ - PullRequest
0 голосов
/ 18 мая 2019

Я работаю над проектом Vue, где я пытаюсь использовать VuexORM.При первоначальной установке я получаю странную ошибку: Module not found: Error: Can't resolve '../uex-orm/core'.

Вместо этого должно быть ../@vuex-orm/core (обратите внимание, что в нем отсутствуют символы @ и 'v').

Я дваждыпроверил, что я не ошибся в импорте.Затем я понял, что реализовал псевдоним, чтобы можно было импортировать из каталога src / с символом @, что, по-моему, объясняет странный импорт.Должно быть, я неправильно настроил мой веб-пакет или .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 голосов
/ 18 мая 2019

Я снова просмотрел документы для babel-plugin-root-import и либо пропустил его, либо он был недавно отредактирован, но они упоминают:

Если вам не нравится синтаксис ~, вы можете использовать свой собственныйсимвол (например, символ # или \ или все, что вы хотите).Использование @ не рекомендуется, так как последние версии NPM допускают @ в именах пакетов.~ является значением по умолчанию, так как очень маловероятно, что оно конфликтует с чем-либо (и в любом случае не будет расширено до HOME).

Итак, изменение моего импорта с @/_components/User' на ~/_components/User работает!

Надеюсь, это поможет кому-то еще!

...