Webpack看不到绝对路径

时间:2019-03-15 10:11:05

标签: javascript reactjs webpack

我在React应用程序中使用绝对路径。但是WebPack抛出一个错误。 ERROR in ./src/index.js Module not found: Error: Can't resolve 'App' in .../client/src'但是,我的文件位于此文件夹中。如何解决这个问题呢?我看到我已经写过关于类似问题的文章,但没有找到答案

WebPack配置

    const path = require('path');
    const HtmlWebpackPlugin = require('html-webpack-plugin');
    const MiniCssExtractPlugin = require('mini-css-extract-plugin');

    module.exports = {
        entry: './src/index.js',
        output: {
            path: path.resolve(__dirname, 'build'),
            publicPath: '/',
            filename: 'bundle.js'
        },
        resolve: {
            extensions: ['.js', '.jsx']
        },
        module: {
            rules: [
                {
                    test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader'
                },
                {
                    test: /\.css$/, use: ['style-loader', 'css-loader'],
                }
                ]
        },
        plugins: [
            new HtmlWebpackPlugin({
                filename: 'index.html',
                template: './public/index/html'
            }),
            new MiniCssExtractPlugin({
                filename: 'style.css'
            })
        ]
    };

我的文件的层次结构

---project
      --client
         -public
           index.html
         -src
           'folders'
           index.js
           App.js
           App.css
      --package.json
      --webpack.config.js
      --.babelrc

1 个答案:

答案 0 :(得分:1)

您可以将其添加到webpack.config文件中。

 resolve: {
      extensions: ['.js', '.jsx'],
      alias: {
        root: __dirname,
        src: path.resolve(__dirname, 'src'),
      },
    },

然后您可以通过

导入

import something from 'src/index.js'

但是,如果您使用的不是Webpack,例如开玩笑,讲故事,那么您还需要应用该信息。

例如为了开玩笑

npm install babel-plugin-module-resolver

并更新.babelrc以了解绝对路径

{
  "plugins": [
    [
      "module-resolver",
      {
        "extensions": [".js", ".jsx"],
        "root": ["./src"],
        "alias": {
          "root": ".",
          "src": "/src"
        }
      }
    ]
  ]
}