javascript - 打包时如何让webpack不使用window对象?

标签 javascript reactjs webpack module

我正在制作一个 React 组件库来抽象出我在多个项目中使用的一些组件。有些项目是用 CRA 做的,有些是用 Gatsby 做的,有些可能是别的东西,等等。我使用了 Neutrino.js 框架/工具链,因为它链接在 React 文档网站上,但我遇到的问题是默认情况下输出构建文件都使用 window对象,这会导致 gatsby build中断为 window在 Node/SSR 中不存在。有没有办法让 Neutrino/webpack 输出一个不使用窗口的包?在寻找解决方案并与其他库进行比较时,似乎 ESM 是最好的,但我不确定如何让 webpack 使用它,我认为它目前不受支持。我应该为此使用其他工具吗?

最佳答案

添加 globalObject配置到您的 webpack 配置:

output: {
    globalObject: "this",
  },
默认为 window例如:
要使 UMD 构建在浏览器和 Node.js 上都可用,请将 output.globalObject 选项设置为“this”。
module.exports = {
  // ...
  output: {
    library: 'myLib',
    libraryTarget: 'umd',
    filename: 'myLib.js',
    globalObject: 'this'
  }
};
-来自文档

关于javascript - 打包时如何让webpack不使用window对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63275209/

相关文章:

javascript - CSS 悬停效果仅在点击时生效

javascript - 天气 api key 不起作用

reactjs - React Native - 如何连接到 AWS DynamoDB 表

javascript - 测试 - React 无状态组件,使用 sinon 监视组件方法

javascript - Webpack bundling 如何减少 React 等流行库的重复下载?

javascript - $.ajax提交表单,有时成功有时出错

javascript - 使用 Let 变量声明和 With 语句

javascript - react 中的 firebase 导出问题

javascript - 无法使用 Webpack 3 和 File-Loader 加载视频文件

d3.js - d3 和 webpack : __WEBPACK_IMPORTED_MODULE_0_d3__. scaleLinear 不是函数