【问题标题】:React Webpack Production errors反应 Webpack 生产错误
【发布时间】:2017-03-20 18:45:46
【问题描述】:

我正在尝试为 React (15.3.2) 应用程序设置 webpack (1.13.3) 配置,并且我希望在我的生产版本中使用生产版本的 React。我在 Windows 上。

我正在使用这个(搜索时在网上到处都是):

new webpack.ProvidePlugin({
  'process.env': {
    'NODE_ENV': JSON.stringify('production')
  }
})

但是,当我添加这个并运行 webpack (CLI) 时,我会因许多错误而被扇耳光。

我收到一大堆这些警告

./~/fbjs/lib/partitionObject.js.flow 中的警告 模块解析失败:C:\node\sandbox\react-webpack\node_modules\fbjs\lib[ SOME FILE NAME HERE].flow Unexpected token (18:24) 您可能需要适当的加载程序来处理此文件类型。

...还有一堆这些错误

./~/react/lib/NativeMethodsMixin.js 中的错误 找不到模块:错误:无法在 C:\node\sandbox\react-webpack\node_modules\react\lib 中解析模块“react-native/lib/TextInputState” @ ./~/react/lib/NativeMethodsMixin.js 17:21-63

我没有使用 React Native,我不知道如何使用。

我还在我的webpack.config.production.js 文件中使用webpack.optimize.UglifyJsPlugin

当我删除 webpack.ProvidePlugin 位时,构建工作正常,但包含 React 的开发版本,并且我在控制台中收到警告:

警告:您似乎正在使用 React 开发版本的缩小副本。将 React 应用程序部署到生产环境时,请确保使用可跳过开发警告且速度更快的生产构建版本。

这些 webpack 错误是怎么回事..?我如何获得也被缩小的 React 生产版本..?

更新

请求完整的 webpack 配置。我为此设置了一个测试应用程序,配置最少,并且仍然显示警告和错误:

webpack.config.js

module.exports = process.env.NODE_ENV === 'production' ? require('./webpack.config.production.js') : require('./webpack.config.development.js')

webpack.config.base.js

module.exports = {
  entry: {
    'bundle': './client/index.js'
  },
  output: {
    path: './public',
    filename: 'js/[name].js'
  },
  module: {
    loaders: [
      {
        test: /\.js$/,
        exclude: /(node_modules|bower_components)/,
        loader: 'babel-loader',
        query: { presets: ['es2015', 'react'] }
      }
    ]
  }
}

webpack.config.development.js

var config = require('./webpack.config.base')
module.exports = config

webpack.config.production.js

var webpack = require('webpack')

var config = require('./webpack.config.base')

config.plugins = [
  new webpack.ProvidePlugin({
    'process.env': {
      'NODE_ENV': JSON.stringify('production')
    }
  }),
  new webpack.optimize.UglifyJsPlugin({
    include: /\.js$/,
    compress: { warnings: false }
  })
]

module.exports = config

我正在使用的测试应用只安装了以下内容:

"dependencies": {
  "express": "^4.14.0",
  "react": "^15.3.2",
  "react-dom": "^15.3.2"
},
"devDependencies": {
  "babel": "^6.5.2",
  "babel-core": "^6.18.2",
  "babel-loader": "^6.2.7",
  "babel-preset-es2015": "^6.18.0",
  "babel-preset-react": "^6.16.0",
  "webpack": "^1.13.3"
}

/client/index.js

import React from 'react'
import ReactDOM from 'react-dom'
import Hello from '../components/Hello'
ReactDOM.render(<Hello />, document.getElementById('page'))

/components/Hello.js

import React from 'react'
const Hello = props => <p>Hello world...</p>
export default Hello

在一个单独的问题中再次询问,但提供了完整的错误列表,并且从 React Native 的角度来看,因为错误包含对 React Native 的引用,即使我没有尝试使用它:

Webpack in production: Why React Native errors?

【问题讨论】:

  • 你似乎做对了一切。您确定您不使用在某处依赖于 react-native 的外部库吗?这似乎是这里的问题。你能发布你的完整 webpack 配置吗?
  • 我刚刚用 webpack 配置文件更新了我的问题。没有webpack.ProvidePlugin,它可以工作,没有警告或错误。使用webpack.ProvidePlugin,所有错误都会再次显示。
  • 刚刚也添加了我的dependencies 列表...
  • 这里似乎没有什么不正确的......你只是在使用简单的import React from 'react',对吧?没有奇怪的进口?
  • 没什么奇怪的 - 只是添加了 webpack 指向的 index.js 的内容。我先做一个服务器渲染,但这不应该影响 webpack 正在做的事情。

标签: javascript reactjs webpack


【解决方案1】:

在此回答:Webpack in production: Why React Native errors?,作者:Aruna Herath。

我应该使用DefinePlugin 而不是ProvidePlugin

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-07
    • 2016-04-10
    • 2018-11-07
    • 2020-04-15
    • 2018-03-11
    • 2017-12-08
    相关资源
    最近更新 更多