【问题标题】:React - Module parse failedReact - 模块解析失败
【发布时间】:2016-05-30 21:01:35
【问题描述】:

我从命令行运行 webpack 一整天都遇到这个错误:

ERROR in ./index.js
Module parse failed: /home/kuro/Workspace/ExpressJS/corate/src/index.js Line 10: Unexpected token <
You may need an appropriate loader to handle this file type.
|   render:function(){      
|       return (
|           <div>
|               <div className="left">
|                   <img src={mac}/>

这是我在index.js中的代码

var React=require('react');
var ReactDOM=require('react-dom');
var style=require('../public/css/style.css');
var mac=require('../public/images/img_landing_page_mac.png');
var chrome=require('../public/images/btn_get_chrome.png');

var Content=React.createClass({
    render:function(){      
        return (
            <div>
                <div className="left">
                    <img src={mac}/>
                </div>
                <div className="right">
                    <h2 style={font-size: '33px', letter-spacing: '5px'}>
                        Organize <br>Modern Knowledge<br> for Mankind
                    </h2>
                    <p style={font-size: '20px', margin-top: '35px', letter-spacing: '4px'}>
                        Consume, Colect and Revisit <br>Knowledge at Your Fingertips
                    </p>
                    <a href="#" style={margin-top: '80px', display: 'inline-block', margin-left: '-17px'}>
                        <img src={chrome}/>
                    </a>
                </div>
            </div>
        );
    }
});

ReactDOM.render(<Content/>,document.getElementByClassName('container'));

并在webpack.config.js中配置:

module.exports={
    context: __dirname+'/src',
    entry:'./index.js',
    output:{
        path:__dirname+'/static',
        filename:'bundle.js'
    },
    module:{
        loaders:[
        {
            test:/\.png$/,
            loader:'url?limit=10000'
        },
        {
            test:/\.jpg$/,
            loader:'url?limit=10000'
        },
        {
            test:/\.css$/,
            loader:'style!css'
        }
        ]
    }
}

我无法弄清楚它有什么问题。我在这里遗漏了什么吗?

【问题讨论】:

    标签: parsing reactjs module webpack loader


    【解决方案1】:

    您需要添加babel-loader,加上react preset,请执行以下步骤

    1. npm i --save-dev babel-loader babel-preset-react babel-preset-es2015
    2. babel-loader 添加到webpack.config.js 配置(到loaders: [..] 部分)

      {  
         test: /\.jsx?$/,
         exclude: /(node_modules)/,
         loader: 'babel',
         query: {
            presets: ['react', 'es2015']
         }
      }
      

    更新: babel-preset-es2015babel-preset-react 已被弃用,取而代之的是使用 @babel/env@babel/preset-react

    1. npm i --save-dev babel-loader @babel/core @babel/preset-react @babel/preset-env
    2. 添加到webpack.config.js 配置为babel-loader
      rules: [
        {
          test: /\.jsx?$/,
          exclude: /(node_modules)/,
          use: {
            loader: 'babel-loader',
            options: {
              presets: ['@babel/preset-env', '@babel/preset-react']
            }
          }
        }
      ]
    

    【讨论】:

      【解决方案2】:

      好伙伴。这行得通

          module: {
             rules: [
              // CSS loader here
              {
               test: /\.svg$/,
                 use: 'file-loader'
               }
                  ]
          }
      

      将此添加到您的 webpack 配置文件中 npm install --save-dev style-loader css-loader

      【讨论】:

      • 但一定要运行这个:npm install --save-dev style-loader css-loader
      猜你喜欢
      • 2017-06-01
      • 2019-05-20
      • 1970-01-01
      • 2021-05-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-05
      • 2018-06-01
      • 1970-01-01
      相关资源
      最近更新 更多