简体   繁体   English

无法解决模块的反应

[英]Can't resolve module in react

According to the following: Webpack 2: cannot resolve module 根据以下内容:Webpack 2: 无法解析模块

I have tried to use modules instead of alias to load my component like this : 我试图使用modules而不是alias来像这样加载我的组件:

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

but i get the following webpack error: 但我收到以下webpack错误:

ERROR in ./app/app.jsx Module not found: Error: Can't resolve 'TodoApp' in 'C:....' @ ./app/app.jsx 10:14-32 @ multi babel-polyfill script-loader!jquery/dist/jquery.min.js script-loader!foundation-sites/dist/js/foundation.min.js ./app/app.jsx 找不到./app/app.jsx模块中的错误:错误:无法解析“ C:....”中的“ TodoApp” @。/ app / app.jsx 10:14-32 @ multi babel-polyfill脚本-loader!jquery / dist / jquery.min.js脚本加载器!foundation-sites / dist / js / foundation.min.js ./app/app.jsx


Every thing goes okay, If i use alias for each component instead like this: 一切正常,如果我对每个组件都使用alias ,就像这样:

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

You have semicolon in resolve.extensions property: '.jsx;' 你已经semicolonresolve.extensions属性: '.jsx;' . This semicolon was the root of the problem why resolve.modules didn't work. 这个分号是为什么resolve.modules无法工作的问题的根源。

When you remove this semicolon and add 'app/components' to resolve.modules , webpack bundles without errors. 当您删除该分号,并添加'app/components'resolve.modules ,捆绑的WebPack没有错误。

webpack.config.js (after changes) 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',
};

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM