V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
CodingPuppy
V2EX  ›  React

前端小白 需要帮助! React && webpack 相关的一个问题

  •  
  •   CodingPuppy · 2017-07-13 19:21:32 +08:00 · 1991 次点击
    这是一个创建于 2478 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我在做一个自娱自乐的 React library,通过 webpack 打包。在 webpack.config 中配置不打包 react、react-dom

    var webpackConfig = {
      entry: './components',
      output: { 
        path: path.resolve(__dirname, 'dist'),
        filename: 'react-table.js',
        library: 'ReactReport',
        libraryTarget: 'umd'
      },
      module: {
        loaders: [
          {
            test: /.js?$/,
            loader: 'babel-loader',
            exclude: /node_modules/,
            query: {
              presets: ['es2015', 'react']
            }
          }
        ]
      },
      externals: {
        react: {
          root: 'React',
          commonjs2: 'react',
          commonjs: 'react',
          amd: 'react'
        },
        'react-dom': {
          root: 'ReactDOM',
          commonjs2: 'react-dom',
          commonjs: 'react-dom',
          amd: 'react-dom'
        }
      },
    

    在 webpack 中,暴露 react-table 中的 ReactReport 对象到全局。 然后在 html 中这么写,

    <body>
      <div id="root">
      </div>
    
      <script src="../dist/react-table.js"></script>
      <script src="https://cdn.bootcss.com/react/15.6.1/react.min.js"></script>
      <script src="https://cdn.bootcss.com/react/15.6.1/react-dom.min.js"></script>
      <script>
        var ReactReport = ReactReport.ReactReport;
        var serverData = {someData};
        var App = React.createElement(
          ReactReport,
          { data: serverData }
        );
        ReactDOM.render(App, document.getElementById('root'));
      </script>
    
    </body>
    

    在 webpack 中配置不打包 react 时运行会报错,找不到 React.Component,

    Cannot read property 'Component' of undefined
    

    我在 html 中不是写了 cdn 的 React 了吗?有朋友知道为什么么? google 一下午了。。

    完全前端新手,webpack 基本是混沌状态

    4 条回复    2017-07-14 08:59:14 +08:00
    CodingPuppy
        1
    CodingPuppy  
    OP
       2017-07-13 19:26:43 +08:00
    有人没阿,哪个大神有耐心看完我的问题,指导我一下阿!!
    zenxds
        2
    zenxds  
       2017-07-13 19:37:10 +08:00   ❤️ 1
    依赖关系写错了吧,react-table 应该在 react 之后
    witcher42
        3
    witcher42  
       2017-07-13 20:46:14 +08:00 via iPhone   ❤️ 1
    2 楼正解
    CodingPuppy
        4
    CodingPuppy  
    OP
       2017-07-14 08:59:14 +08:00 via Android
    感谢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4608 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 01:09 · PVG 09:09 · LAX 18:09 · JFK 21:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.