【问题标题】:Can't resolve module in react无法在反应中解析模块
【发布时间】:2023-03-13 07:55:01
【问题描述】:

根据如下:Webpack 2:cannot resolve module

我尝试使用modules 而不是alias 来加载我的组件,如下所示:

  resolve: {
    modules: [__dirname, 'node_modules',path.resolve('./app/components')],
    alias:{
      applicationStyles:'app/styles/app.scss'
    },

但我收到以下 webpack 错误:

./app/app.jsx 中的错误未找到模块:错误:无法解析 'C:....' 中的'TodoApp' @ ./app/app.jsx 10:14-32 @ multi babel-polyfill 脚本加载器!jquery/dist/jquery.min.js script-loader!foundation-sites/dist/js/foundation.min.js ./app/app.jsx


一切正常,如果我对每个组件使用alias,而不是像这样:

 resolve: {
    modules: [__dirname, 'node_modules'],
    alias:{
      applicationStyles:'app/styles/app.scss',
      TodoApp: 'app/components/TodoApp.jsx'
    },
    extensions: ['*','.js','.jsx;']
  },

【问题讨论】:

  • 你写的错误说它不能解析模块TodoApp。它没有提到applicationStyles。您必须在某处导入 TodoApp
  • @LukeVella: 是的,与 webpack 中 TodoApp 组件的配置有关的错误,因为当我使用 alias 部分而不是 modules 部分时,一切正常。
  • @AnynameDonotcare 你能为这个问题准备一些回购吗?
  • 你能用导入代码示例做一些 sn-p 或要点吗?您应该通过相对路径 (from '../components/Todo') 导入不在 node_modules 中的自定义组件

标签: javascript reactjs webpack jsx webpack-2


【解决方案1】:

您在resolve.extensions 属性中拥有semicolon'.jsx;'。 这个分号是resolve.modules 不起作用的问题根源。

当你删除这个分号并将'app/components' 添加到resolve.modules 时,webpack 打包时不会出错。

webpack.config.js (更改后)

var webpack = require('webpack');
var path = require('path');

module.exports = {
  entry: [
    'babel-polyfill',
    'script-loader!jquery/dist/jquery.min.js',
    'script-loader!foundation-sites/dist/js/foundation.min.js',
    './app/app.jsx',
  ],
  output: {
    path: __dirname,
    filename: './public/bundle.js',
  },
  externals: {
    jquery: 'jQuery',
  },
  plugins: [
    new webpack.ProvidePlugin({
      $: 'jquery',
      jQuery: 'jquery',
    }),
  ],
  resolve: {
    modules: [__dirname, 'app/components', 'node_modules'],
    alias: {
      applicationStyles: 'app/styles/app.scss',
    },
    extensions: ['*', '.js', '.jsx'],
  },
  module: {
    rules: [
      {
        loader: 'babel-loader',
        query: {
          presets: ['react', 'es2015', 'es2017', 'stage-0'],
          plugins: ['transform-runtime'],
        },
        test: /\.jsx?$/,
        exclude: /(node_modules|bower_components)/,
      },

      {
        test: /\.scss$/,
        use: [
          {
            loader: 'sass-loader',
            options: {
              includePaths: ['./node_modules/foundation-sites/scss'],
            },
          },
        ],
      },
    ],
  },

  devtool: 'cheap-module-eval-source-map',
};

【讨论】:

猜你喜欢
  • 2019-03-10
  • 2018-05-24
  • 2016-02-03
  • 2017-04-05
  • 2020-08-26
  • 1970-01-01
  • 2019-03-12
  • 2020-12-19
  • 1970-01-01
相关资源
最近更新 更多