导入npm包时未定义窗口?

时间:2016-08-03 09:00:12

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

我正在尝试学习如何创建和发布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应用程序中处理它吗?怎么样?

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

1 个答案:

答案 0 :(得分:0)

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

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