我的 NuxtJS 应用程序需要帮助。
最近,在我离开应用程序一段时间(2 个月)而没有更新后,应用程序中出现了 ESLint 冲突。因此,在我开始研究它之后,尝试解决 ESLint 问题提出了挑战。然后我必须将项目迁移到较新版本的 Node 和 ESLint。
这样做之后,我解决了冲突问题,我的项目可以安装我的依赖项,但现在服务器无法启动。节点现在抛出一个错误,我什至不知道如何修复。我不知道许多其他人在升级 Node.js 版本后是否面临这个问题,但它抛出了有关不支持的哈希函数的错误。
这是阻止我的服务器启动的终端错误的屏幕截图:
我已经解决了迁移带来的所有 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"]
},
}
关于这个错误,经过大量研究后,我终于发现整个错误是由于nodejs升级到v18.12.1版本引起的,所以我建议每个刚刚升级tio node v18.12.1的遇到同样问题的人降级回版本Node v16.0.0,如果您需要这方面的帮助,您可以使用
nvm
。
下面概述了一些步骤,以及一些资源链接
`
安装Nodejs v16.0.0
nvm install 16.0.0
卸载nodejs v18.12.1
nvm uninstall 18.12.1
或您自己的节点版本
我确实这对某人有帮助,就像对我一样,我知道框架错误带来的痛苦。如果您需要进一步帮助,请发表评论。 谢谢你。
就我而言,当我运行时,这发生在我的 Github Actions 构建管道中
npm run build
。
我能够通过提供以下环境参数来修复它:
export NODE_OPTIONS=--openssl-legacy-provider
根据我读到的内容,这个节点选项也可以在package.json中设置。
这似乎比将nodejs降级到v16要容易一些。
检查了这里的解决方案,我决定在项目中安装[email protected]作为开发依赖。
npm install [email protected] --save-dev
然后在脚本中包含命令“dev”:“npm runserve”。
"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
它将使用项目依赖项的节点运行脚本。
我花了很多时间来解决这个问题。如果您使用 Fedora 并收到此错误
尝试使用以下标志运行您的项目:
NODE_OPTIONS=--openssl-legacy-provider
例如:"dev": "NODE_OPTIONS=--openssl-legacy-provider next -p 4000"
如果对你有帮助,那么你可以将其设置为 Node 环境
echo $NODE_OPTIONS
export NODE_OPTIONS=--openssl-legacy-provider
我使用16.17.1版本的NodeJs,设置NODE_OPTIONS var对我有帮助。
如果这没有帮助,请尝试最后一步,尝试取消注释
/etc/ssl/openssl.cnf
文件中的以下行。
您可以使用Romanric AKAM给出的答案,但是如果您有多个项目需要不同的节点版本(在我的情况下,我有两个项目依赖于不同的版本)
因此,在这种情况下,请转到您遇到此问题的项目目录并运行
nvm install 16.0.0
注意:请先安装nvm
我注意到有一个更新的版本:Node-18.13.0。所以我尝试更新到这个最新版本而不是回滚到以前的版本,但它不起作用。
然后,我在这里查看了其他版本:
安装 Node-v15.6.0 版本解决了我的这个问题。因此,目前回滚 Node 可能是我们最好的选择。