反應我試圖排除這是由產生的WebPack我捆反應。原因是,我們有一個全球版本的頁面上可用的反應,所以我會使用。排除的WebPack束
我已經使用下面的嘗試,這裏Webpack and external libraries建議但這似乎並沒有工作。我能看到的WebPack已遠銷反應,但它仍然 出現在捆綁。
externals: {
'react': 'React'
}
我在想這可能是另一個依賴,例如,反應路由器導入反應?有沒有人設法做到這一點?
反應我試圖排除這是由產生的WebPack我捆反應。原因是,我們有一個全球版本的頁面上可用的反應,所以我會使用。排除的WebPack束
我已經使用下面的嘗試,這裏Webpack and external libraries建議但這似乎並沒有工作。我能看到的WebPack已遠銷反應,但它仍然 出現在捆綁。
externals: {
'react': 'React'
}
我在想這可能是另一個依賴,例如,反應路由器導入反應?有沒有人設法做到這一點?
您只需創建多個條目,以分開你的應用程序包的反應。你可以舉例如下,使用webpack CommonsChunkPlugin:
module.exports = {
entry: {
"app": "your app entry file",
"react" : "react"
},
plugins: [
new webpack.optimize.CommonsChunkPlugin("react", "react.bundle.js")
]
}
我有和你一樣的問題。被卡一晚,找到了答案,react-dom
需要react/lib/ReactDOM
,仍然包括在束react
。解決方案是這樣的:
externals: {
'react': 'react', // Case matters here
'react-dom' : 'reactDOM' // Case matters here
}
在你的頁面然後加入react-dom
到腳本標籤。
webpack
配置:
externals: {
'react': 'React',
'react-dom': 'ReactDOM',
'react-router': 'ReactRouter'
}
它們添加到index.html
體的底部。
<script src="http://cdn.bootcss.com/react/15.4.1/react.js"></script>
<script src="http://cdn.bootcss.com/react/15.4.1/react-dom.js"></script>
<script src="http://cdn.bootcss.com/react-router/2.8.1/ReactRouter.js"></script>
,並在你的entry
文件,也許index.js
:
var React = require('react');
var ReactDOM = require('react-dom');
var ReactRouter = require('react-router');
const App =() => {
return <div>
webpack externals
</div>
};
ReactDOM.render(
<App/>,
document.getElementById('container')
);
也許這將有助於:https://github.com/webpack/webpack/issues/1275 – Kreozot
見本相關的問題。 http://github.com/webpack/webpack.js.org/issues/1726 – cpxPratik