如何使用webpack为库提供窗口

时间:2018-04-27 15:24:21

标签: webpack

我正在转换一个应用程序以使用webpack,并且有一个库试图访问window.navigator.userAgent并且它失败了“无法读取未定义的属性'userAgent'”。 (该库是jquery.browser,但我想它很容易出现在其他人中)

如何确保图书馆可以访问window对象?

我已经阅读了webpack的shimming指南,并且熟悉了externals配置。我已经使用了import-loader来尝试导入它,我在window: 'window'对象中设置了externals,我已经将window: 'window'添加到ProvidePlugin,以及各种组合,但是相同的结果。

我想有一些我尚未尝试的配置组合,这是关键。感谢您的任何指示!

1 个答案:

答案 0 :(得分:0)

好的,在这里回答我自己的问题:似乎开箱即用的模块可以访问 class LCL_Active_Details extends Component { import { DetailsLayout } from "../../../components/detailsLayout"; render() { return ( <Container> <Content padder> <Text style={styles.header_2}>ROUTING</Text> <DetailsLayout item={this.props.items} /> </Content> </Container> ); } } function mapStateToProps(state) { return { items: state.items }; } function matchDispatchToProps(dispatch){ return { LCL_ActiveSelectedShipment(item) { debugger; dispatch(LCL_ActiveSelectedShipment(item)) } } } export default connect(mapStateToProps, matchDispatchToProps (LCL_Active_Details); 就好了。问题库(jquery.browser)的问题是它有一个umd包装器,其中window变量是一个局部变量,通过window设置传递给函数。

因此,要正确设置本地this变量,我可以使用imports-loader配置webpack以将window设置为this

window