【问题标题】:Window is not defined while importing an npm package?导入 npm 包时未定义窗口?
【发布时间】:2016-08-03 09:00:12
【问题描述】:

我正在尝试学习如何创建和发布 npm 包。

我创建了一个 npm 包,https://github.com/nitte93/OnBoarding 为了我的学习目的。

https://www.npmjs.com/package/onBoarding

它在开发版本中运行良好,但是当我尝试在我的同构反应应用程序中导入它时,我得到:ReferenceError: window is not defined

我没有明确使用包中的window对象,但是有些地方我已经明确使用了jquery。

现在,我不确定,但我所了解的是,在我的同构应用程序中导入这个 npm 包时,我试图在 NODE 环境中使用窗口对象,我认为这是错误的,因为窗口对象只能访问在浏览器端。

我的问题是我该如何处理。

1) 我需要在我的 npm 包中处理这个问题吗?

2)我应该在我的 Isomorphic 应用程序中处理它吗?怎么样?

请回答或指向正确的资源来解决此问题。

【问题讨论】:

  • 你不应该使用jquery,它只适用于浏览器

标签: node.js reactjs npm webpack isomorphic-javascript


【解决方案1】:

我查看了您的存储库,我认为唯一可能是罪魁祸首是 OnBoarding.js 组件中需要 semantic-ui 供应商 js 文件,我认为这也是服务器呈现的文件。相反,您需要要求那些仅在客户端文件内的浏览器上运行的包(将调用 ReactDom.render().. 我认为它是 /src/example/index.js)。

此外,根据经验,不要将任何特定于浏览器的代码放在componentWillMount 中,因为它会在服务器上调用。不过,componentDidMount 是安全的,因为它只在浏览器中调用。

【讨论】:

    猜你喜欢
    • 2019-10-13
    • 2019-11-07
    • 2018-01-20
    • 2020-02-11
    • 2021-04-05
    • 2021-06-02
    • 1970-01-01
    • 2012-11-14
    • 2021-12-20
    相关资源
    最近更新 更多