使用ZEIT Now,Next.js和Gun.js时,如何解决部署错误“未定义OSSL_WEBCRYPTO_OR_TEXT_ENCODING_NOT_INSTALLED”?

时间:2019-07-27 18:42:17

标签: next.js gun zeit-now

由于Gun.js参考错误OSSL_WEBCRYPTO_OR_TEXT_ENCODING_NOT_INSTALLED is not defined,我无法通过ZEIT Now部署Next.js应用程序。在本地计算机上以开发模式运行时没有错误。

在部署日志中出现错误之前,消息是“默认情况下可能不包括node-webcrypto-ossl和text-encoding,请将其添加到package.json中!”这样做不能解决错误,也不能按照https://github.com/amark/gun#additional-cryptography-libraries添加@trust/webcrypto(我正在使用SEA进行用户身份验证)。

package.json依赖项:

{
  "dependencies": {
    "@trust/webcrypto": "^0.9.2",
    "directory-named-webpack-plugin": "^4.0.1",
    "gun": "^0.2019.712",
    "mapbox-gl": "^1.1.1",
    "next": "^9.0.1",
    "next-offline": "^4.0.2",
    "node-webcrypto-ossl": "^1.0.48",
    "react": "^16.8.6",
    "react-dom": "^16.8.6",
    "styled-components": "^4.3.2",
    "text-encoding": "^0.7.0"
  }
}

请帮助! :-)

4 个答案:

答案 0 :(得分:0)

@ randy-morantes您的package.json看起来正确。

您可以尝试分享:

  • 错误的堆栈跟踪。
  • 您的调用枪的服务器代码会导致此问题。

答案 1 :(得分:0)

我是peculiar \ webcrypto和node-webcrypto-ossl软件包的作者。根据枪支来源:

https://github.com/amark/gun/blob/e0d85f02b567a43d39cda0fe71522b84ff52a08b/sea/shim.js#L25

看来他们还没有切换到特殊\ webcrypto。尝试将node-webcrypto-ossl添加到package.json中。

答案 2 :(得分:0)

Next.js的最新版本("next": "9.0.4""next-offline": "4.0.5")解决了该问题!

答案 3 :(得分:0)

昨晚我遇到了这个问题,最终通过一些猴子补丁和破解成功地解决了这个问题。诀窍是将 gun sea 从Webpack中移出并做出反应,然后使用 window.gun 对其进行访问。另外,当枪不在webpack中时,枪的运行速度似乎更快。

这是我在Gatsbyjs项目中所做的事情:

阅读此文档:https://www.gatsbyjs.org/docs/custom-html/

  1. 将./cache/default-html.js复制到./src/html.js
  2. 现在在html.js中启动“开枪了”。您可以在此处从github或jsdelivr加载外部js文件。
  3. 然后在您的gatsby中反应组件,只需调用window.gun和window.user并享受黑客入侵:

    如果(窗户)开枪...

  4. 现在运行 gatsby build ,您可以看到它的构建没有错误。