我正在转换一个应用程序以使用webpack,并且有一个库试图访问window.navigator.userAgent
并且它失败了“无法读取未定义的属性'userAgent'”。 (该库是jquery.browser,但我想它很容易出现在其他人中)
如何确保图书馆可以访问window
对象?
我已经阅读了webpack的shimming指南,并且熟悉了externals
配置。我已经使用了import-loader来尝试导入它,我在window: 'window'
对象中设置了externals
,我已经将window: 'window'
添加到ProvidePlugin,以及各种组合,但是相同的结果。
我想有一些我尚未尝试的配置组合,这是关键。感谢您的任何指示!
答案 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