Stephen Last Stephen Last - 27 days ago 17
React JSX Question

Webpack in production: Why React Native errors?

I have a test app with the following installed:

"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"
}


My webpack.config.js:

module.exports = {
entry: {
'bundle': './client/index.js'
},
output: {
path: './public',
filename: 'js/[name].js'
},
plugins: [
new webpack.ProvidePlugin({
'process.env': {
NODE_ENV: JSON.stringify('production')
}
})
],
module: {
loaders: [
{
test: /\.js$/,
exclude: /(node_modules|bower_components)/,
loader: 'babel-loader',
query: { presets: ['es2015', 'react'] }
}
]
}
}


Why do I get these React Native related errors..?? I'm not trying to use React Native!

(When I remove
webpack.ProvidePlugin()
the errors go away, but I need the production build of React).


ERROR in ./~/react/lib/NativeMethodsMixin.js
Module not found: Error: Cannot resolve module 'react-native/lib/TextInputState' in C:\node\sandbox\react-webpack\node_modules\react\lib
@ ./~/react/lib/NativeMethodsMixin.js 17:21-63

ERROR in ./~/react/lib/NativeMethodsMixin.js
Module not found: Error: Cannot resolve module 'react-native/lib/UIManager' in C:\node\sandbox\react-webpack\node_modules\react\lib
@ ./~/react/lib/NativeMethodsMixin.js 18:16-53

ERROR in ./~/react/lib/ReactNativeBaseComponent.js
Module not found: Error: Cannot resolve module 'react-native/lib/UIManager' in C:\node\sandbox\react-webpack\node_modules\react\lib
@ ./~/react/lib/ReactNativeBaseComponent.js 22:16-53

ERROR in ./~/react/lib/ReactNativeBaseComponent.js
Module not found: Error: Cannot resolve module 'react-native/lib/deepFreezeAndThrowOnMutationInDev' in C:\node\sandbox\react-webpack\node_modules\react\lib
@ ./~/react/lib/ReactNativeBaseComponent.js 24:40-101

ERROR in ./~/react/lib/ReactNativeAttributePayload.js
Module not found: Error: Cannot resolve module 'react-native/lib/deepDiffer' in C:\node\sandbox\react-webpack\node_modules\react\lib
@ ./~/react/lib/ReactNativeAttributePayload.js 16:17-55

ERROR in ./~/react/lib/ReactNativeAttributePayload.js
Module not found: Error: Cannot resolve module 'react-native/lib/flattenStyle' in C:\node\sandbox\react-webpack\node_modules\react\lib
@ ./~/react/lib/ReactNativeAttributePayload.js 17:19-59

ERROR in ./~/react/lib/ReactNativeBridgeEventPlugin.js
Module not found: Error: Cannot resolve module 'react-native/lib/UIManager' in C:\node\sandbox\react-webpack\node_modules\react\lib
@ ./~/react/lib/ReactNativeBridgeEventPlugin.js 20:16-53

ERROR in ./~/react/lib/ReactNativeDOMIDOperations.js
Module not found: Error: Cannot resolve module 'react-native/lib/UIManager' in C:\node\sandbox\react-webpack\node_modules\react\lib
@ ./~/react/lib/ReactNativeDOMIDOperations.js 15:16-53

ERROR in ./~/react/lib/ReactNativeDefaultInjection.js
Module not found: Error: Cannot resolve module 'react-native/lib/InitializeJavaScriptAppEngine' in C:\node\sandbox\react-webpack\node_modules\react\lib
@ ./~/react/lib/ReactNativeDefaultInjection.js 23:0-57

ERROR in ./~/react/lib/ReactNativeDefaultInjection.js
Module not found: Error: Cannot resolve module 'react-native/lib/RCTEventEmitter' in C:\node\sandbox\react-webpack\node_modules\react\lib
@ ./~/react/lib/ReactNativeDefaultInjection.js 27:22-65

ERROR in ./~/react/lib/ReactNativeDefaultInjection.js
Module not found: Error: Cannot resolve module 'react-native/lib/View' in C:\node\sandbox\react-webpack\node_modules\react\lib
@ ./~/react/lib/ReactNativeDefaultInjection.js 79:15-47

ERROR in ./~/react/lib/ReactNativeGlobalResponderHandler.js
Module not found: Error: Cannot resolve module 'react-native/lib/UIManager' in C:\node\sandbox\react-webpack\node_modules\react\lib
@ ./~/react/lib/ReactNativeGlobalResponderHandler.js 13:16-53

ERROR in ./~/react/lib/ReactNativeMount.js
Module not found: Error: Cannot resolve module 'react-native/lib/UIManager' in C:\node\sandbox\react-webpack\node_modules\react\lib
@ ./~/react/lib/ReactNativeMount.js 21:16-53

ERROR in ./~/react/lib/ReactNativeTextComponent.js
Module not found: Error: Cannot resolve module 'react-native/lib/UIManager' in C:\node\sandbox\react-webpack\node_modules\react\lib
@ ./~/react/lib/ReactNativeTextComponent.js 19:16-53

ERROR in ./~/react/lib/ReactDOMFiber.js
Module not found: Error: Cannot resolve 'file' or 'directory' ./ReactFiberReconciler in C:\node\sandbox\react-webpack\node_modules\react\lib
@ ./~/react/lib/ReactDOMFiber.js 15:27-60

ERROR in ./~/react/lib/ReactNoop.js
Module not found: Error: Cannot resolve 'file' or 'directory' ./ReactFiberReconciler in C:\node\sandbox\react-webpack\node_modules\react\lib
@ ./~/react/lib/ReactNoop.js 22:27-60

Answer

Use DefinePlugin Instead of ProvidePlugin. That's the plugin used for this use case.

I don't understand what triggered those errors though. I think react does contain some code that are specific to react-native.

Comments