【问题标题】:Invalid Hook Call error when running Next app from PM2从 PM2 运行 Next 应用程序时出现无效的 Hook Call 错误
【发布时间】:2022-02-10 06:22:21
【问题描述】:

我们在 Windows Server 2012R2 Web 服务器上安装了 Node.js。一位开发人员使用 Next/React/Node 为我们创建了一个应用程序(我不是 Web 开发人员,所以我不确定所使用的各种开发工具的细节)。这个应用程序在命令行上手动启动时可以正常工作,如下所示:

C:\NodeApps\pacifield>"C:\PROGRAM FILES\NODEJS\NODE.EXE" C:\NodeApps\pacifield\node_modules\next\dist\bin\下一个开始

但是,这需要有人在服务器重新启动或应用因任何原因停止时手动登录并重新启动应用。我正在尝试设置 PM2 来运行该应用程序。在您浏览到该应用程序之前,它已启动并运行良好 - 此时您会收到以下错误:

next-server.ts:306 Error: Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:
1. You might have mismatching versions of React and the renderer (such as React DOM)
2. You might be breaking the Rules of Hooks
3. You might have more than one copy of React in the same app
See https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem.
    at resolveDispatcher (c:\NodeApps\pacifield\node_modules\react\cjs\react.development.js:1476:13)
    at useContext (c:\NodeApps\pacifield\node_modules\react\cjs\react.development.js:1484:20)
    at useSession (c:\NodeApps\pacifield\node_modules\next-auth\dist\client\index.js:75:39)
    at Provider (c:\NodeApps\pacifield\node_modules\next-auth\dist\client\index.js:588:12)
    at processChild (C:\NodeApps\pacifield\node_modules\react-dom\cjs\react-dom-server.node.development.js:3353:14)
    at resolve (C:\NodeApps\pacifield\node_modules\react-dom\cjs\react-dom-server.node.development.js:3270:5)
    at ReactDOMServerRenderer.render (C:\NodeApps\pacifield\node_modules\react-dom\cjs\react-dom-server.node.development.js:3753:22)
    at ReactDOMServerRenderer.read (C:\NodeApps\pacifield\node_modules\react-dom\cjs\react-dom-server.node.development.js:3690:29)
    at Object.renderToString (C:\NodeApps\pacifield\node_modules\react-dom\cjs\react-dom-server.node.development.js:4298:27)
    at Object.renderPage (C:\NodeApps\pacifield\node_modules\next\dist\server\render.js:596:45)

我已经检查过,在 C:\NodeApps\pacifield\node_modules\react 中只有一个 React 安装,当它在 PM2 之外运行良好时,其他建议似乎没有意义。当应用程序从命令行与 PM2 运行时,我已使用 ProcessExplorer 检查所有环境变量都是相同的(除了 PM2 添加的其他变量)。

大家有什么建议吗?

【问题讨论】:

    标签: node.js reactjs next.js pm2


    【解决方案1】:

    钩子只能在功能组件内部或另一个钩子内部调用。

    注意:Invalid Hook Call Warning

    通知您的前端开发人员。

    【讨论】:

    • 谢谢,但这并不能解释为什么它在直接调用时有效,但在通过 PM2 运行时无效。
    • 我认为你几乎不可能得到这个问题的答案,即使你这样做了,错误的是它通过并且没有给出错误......也许如果你创建下一个存储库中的问题,您可以获得一些信息。万事如意,万事如意
    • 如果您有任何关于它的信息,请与我们分享,也许它可以帮助其他人。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-14
    • 2018-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多