如何解决"Error: error:0308010C:digital envelope routines::unsupported" Nodejs 18 error

回答 4 浏览 1.2万 2022-11-23

我的nuxtjs应用程序需要帮助。最近,在我离开它一段时间(2个月)没有更新后,应用程序中出现了eslint冲突。因此,在我开始开发该应用程序后,试图解决eslint的问题是一个挑战,所以我不得不将项目迁移到一个较新的节点和eslint的版本。之后,我解决了冲突问题,我的项目可以安装我的依赖,但现在服务器无法启动,Node现在抛出一个错误,我甚至不知道如何开始修复,我不知道是否有许多其他人在升级他们的nodejs版本后面临这个问题,但它抛出一个关于不支持哈希函数的错误。在此输入图片描述

这是一个终端错误的截图,它阻止了我的服务器启动,我已经解决了所有的eslint和语法错误,这些错误都是随着迁移而来的,所以我不知道还能做什么,我真的需要帮助。

下面是我的nuxt.config.js文件的一个片断

export default {
  // Global page headers: https://go.nuxtjs.dev/config-head
  head: {
    title: 'heritage-fd',
    meta: [
      { charset: 'utf-8' },
      { name: 'viewport', content: 'width=device-width, initial-scale=1' },
      { hid: 'description', name: 'description', content: '' },
      { name: 'format-detection', content: 'telephone=no' }
    ],
    
    link: [
      { rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' }
    ],
    
    script: [
      {
        src: '~/static/css/bootstrap.min.js',
      },
    ],
  },

  // Global CSS: https://go.nuxtjs.dev/config-css
  css: [
    {src: '~/static/css/bootstrap.min.css', lang: 'scss'},
    {src: '~/assets/scss/custom.scss', lang: 'scss'},
    {src: "~layouts/global.css"},
    {src: '~/static/css/style.css', lang: 'scss'},
    {src: '~/assets/css/main.css'}
    
  ],

  // Plugins to run before rendering page: https://go.nuxtjs.dev/config-plugins
   plugins: [
    "~/plugins/vee-validate.js",
    { src: '~/plugins/persistedState.client.js', ssr: false }
   ],

  // Auto import components: https://go.nuxtjs.dev/config-components
  components: true,

  // Modules for dev and build (recommended): https://go.nuxtjs.dev/config-modules
  buildModules: [
    // https://go.nuxtjs.dev/eslint
    '@nuxtjs/eslint-module',
    'nuxt-gsap-module',
    '@nuxtjs/fontawesome',
  ],

  // Modules: https://go.nuxtjs.dev/config-modules
  modules: [
    // https://go.nuxtjs.dev/axios
    '@nuxtjs/axios',
    // https://go.nuxtjs.dev/pwa
    '@nuxtjs/pwa',
    '@nuxtjs/auth-next',
    'nuxt-vue-select'
  ],

  // Axios module configuration: https://go.nuxtjs.dev/config-axios
  axios: {
    // Workaround to avoid enforcing hard-coded localhost:3000: https://github.com/nuxt-community/axios-module/issues/308
    baseURL: 'http://localhost:8000/api/',
    
  },

  // PWA module configuration: https://go.nuxtjs.dev/pwa
   pwa: {
    manifest: {
      lang: 'en',
    },
  },

  // Build Configuration: https://go.nuxtjs.dev/config-build
 build: {
    transpile: ["vee-validate/dist/rules"],
    vendor: ["vue-tables-2"]
  },
}
Romanric Akam 提问于2022-11-23
你是否尝试过删除你的node_modules,用yarn/pnpm重新安装,检查一些错误?另外,你有package.json之前和之后的文件吗?介意分享一下nuxt.config.js的文件吗?kissu 2022-11-23
是的,我已经做了,是的,我将分享我的Nuxt配置文件。Romanric Akam 2022-11-23
那其他的呢?kissu 2022-11-23
这能回答你的问题吗?Error message "error:0308010C:digital envelope routines::unsupported"segFault 2022-11-23
删除node_modules并不能解决问题,@kissu 你指的是什么其他的东西,那是我的整个nuxt.config文件。Romanric Akam 2022-11-23
4 个回答
#1楼 已采纳
得票数 11

关于这个错误,在做了很多研究之后,我终于发现,整个错误是随着nodejs升级到v18.12.1版本而产生的,所以我建议所有面临同样问题的人,如果最近刚刚升级了io node v18.12.1,可以降级到node v16.0.0,如果你需要帮助,你可以使用nvm

下面概述了一些步骤,并提供了一些资源的链接

  1. 下载并安装nvm 按照这里的说明进行安装。
  1. 安装Nodejs v16.0.0 nvm install 16.0.0

  2. 卸载nodejs v18.12.1 nvm uninstall 18.12.1或你自己的node的版本

我希望这能帮助别人,就像它对我一样,我知道框架错误所带来的痛苦。如果你需要进一步的帮助,请发表意见。谢谢。

Romanric Akam 提问于2022-11-24
对我来说是可行的。在windows下,你只需像往常一样卸载node.js 18,然后下载/安装16。Andrew 2022-12-01
在这样做之前,请考虑这个--stackoverflow.com/a/73027407/1459653--答案中的警告内容。Mark Gavagan 2023-01-11
这并不是解决之道。你需要升级使用过期SSL的过期lib,而不是反过来。在我的例子中,它是一个旧版本的webpack。@MarkGavagan的评论中有描述正确解决方案的链接。vir us 2023-01-16
将Node降级到< 17 对我来说是有效的;我使用的是react-scripts": "^4.0.0";但在看到@MarkGavagan的评论后,我做了npm audit fix --force,它升级了我的react-scripts": "^5.0.1";。之后,SSL问题解决了,现在可以在Node > 17下工作了。Marcelo Scofano Diniz 2023-01-22
#2楼
得票数 1

检查了这里的解决方案,我决定在项目中把node@16.0.0 作为一个开发依赖项来安装。

npm install node@16.0.0 --save-dev

然后在脚本中加入"dev": "npm run serve"的命令。

"scripts": {
    "dev": "npm run serve",
    "serve": "vue-cli-service serve",
    "build": "vue-cli-service build",
    "lint": "vue-cli-service lint"
},

这将使你在运行"npm run dev"的命令时

npm run dev

它将使用你的项目的依赖节点来运行脚本。

Michel 提问于2023-01-16
#3楼
得票数 0

你可以选择Romanric AKAM给出的答案,但如果你有多个项目需要不同的节点版本(在我的例子中,我有两个项目需要依赖不同的版本),那么你可以选择Romanric AKAM给出的答案。

因此,在这种情况下,请进入你面临这个问题的项目目录,并运行nvm install 16.0.0

注:请先插入nvm。

kalyan jonwal 提问于2023-01-03
#4楼
得票数 -1

我注意到有一个较新的版本。Node-18.13.0。所以我试着更新到这个最新版本,而不是回滚到以前的版本,但没有成功。

然后,我在这里查看了其他版本。

https://nodejs.org/dist/

安装Node-v15.6.0版本修复了我的这一问题。因此,现在回滚Node,可能是我们最好的选择。

Gustavo Hilario 提问于2023-01-25