Javascript 如何使网页包在绑定时不使用窗口对象?

Javascript 如何使网页包在绑定时不使用窗口对象?,javascript,reactjs,webpack,module,Javascript,Reactjs,Webpack,Module,我正在制作一个React组件库来抽象出我在多个项目中使用的一些组件。有些项目是用CRA制作的,有些是用盖茨比制作的,有些可能是别的东西,等等。我使用了在React docs网站上链接的Neutrino.js框架/工具链,但我遇到的问题是,默认情况下,构建的输出文件都使用窗口对象,这导致gatsby build中断,因为节点/SSR中不存在window。有没有办法让中微子/网页包输出一个不使用窗口的包?在搜索解决方案并与其他库进行比较时,ESM似乎是最好的,但我不确定如何让webpack使用它,我

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

将配置添加到您的网页配置中:

output: {
    globalObject: "this",
  },
默认值为
窗口

例如:

要使UMD构建在浏览器和Node.js上都可用,请将output.globalObject选项设置为“this”

module.exports = {
  // ...
  output: {
    library: 'myLib',
    libraryTarget: 'umd',
    filename: 'myLib.js',
    globalObject: 'this'
  }
};

-从文档中

从“窗口”将“导入窗口”放在哪里陈述如果我把它放在库中构建的组件中,我会得到一个无法解析的窗口,当我把它放在导入我的组件的应用程序中时也会发生同样的情况。(如果我忽略它,我会得到错误321)非常感谢你,你是救命恩人!我现在很紧张,因为不管我把“globalObject”设置成什么,它都会被覆盖,因为它总是编译成“self”