代码之家  ›  专栏  ›  技术社区  ›  necroface

React-模块分析失败

  •  10
  • necroface  · 技术社区  · 8 年前

    从命令行运行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'
            }
            ]
        }
    }
    

    我想不出它有什么问题。我错过了什么吗?

    2 回复  |  直到 8 年前
        1
  •  13
  •   Oleksandr T.    5 年前

    你需要添加 babel-loader 具有 react preset ,请执行以下步骤

    1. npm i --save-dev babel-loader babel-preset-react babel-preset-es2015
    2. 添加到 webpack.config.js 的配置 巴贝尔装载机 (至 loaders: [..] 部分)

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

    更新: babel-preset-es2015 , babel-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 的配置 巴贝尔装载机
      rules: [
        {
          test: /\.jsx?$/,
          exclude: /(node_modules)/,
          use: {
            loader: 'babel-loader',
            options: {
              presets: ['@babel/preset-env', '@babel/preset-react']
            }
          }
        }
      ]
    
        2
  •  0
  •   Manuel Fash    4 年前

    好吧,伙计,这起作用了

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

    将其添加到您的webpack配置文件中 npm安装--保存dev样式的加载器css加载器