我正在尝试学习如何创建和发布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应用程序中处理它吗?怎么样?
请回答或指向正确的资源来解决此问题。
答案 0 :(得分:0)
我查看了您的存储库,我认为唯一可能是罪魁祸首是semantic-ui
组件中需要OnBoarding.js
供应商js文件,我假设它也是服务器呈现的文件。您需要改为只需要在客户端文件中的浏览器上运行的那些包(将调用ReactDom.render()
的那个包。我认为它是/src/example/index.js
)。
另外,根据经验,不要在componentWillMount
中放置任何特定于浏览器的代码,因为它会在服务器上调用。 componentDidMount
是安全的,因为它只在浏览器中调用。