Plesk 中设置的自定义环境变量在构建期间不适用于 Nuxt.js

问题描述 投票:0回答:1

Plesk Obsidian 18.0.48 上的 Node.js 14.21.1 上的 Nuxt v2.15.8

我正在尝试在 Plesk 的 nodejs 模块中使用环境变量。 但似乎我无法在构建期间访问变量。

我建立了一个基本的 nuxt 项目:

npm init nuxt-app

为了能够将它与我使用的 Plesk nodejs 模块一起使用:

npm i --save nuxt-start

如果我尝试在 nuxt.config.js 中访问这些变量,它们是未定义的。如果我改用 .env 文件,这有效。

  proxy: {
    '/api/': {  
      target: process.env.WP_BACKEND_URL || 'https://fallback.domain.tld',
    },
  },

在 publicRuntimeConfig(也在 nuxt.config.js 中)使用它工作正常:

  publicRuntimeConfig: {  
    wpBackendUrl: process.env.WP_BACKEND_URL || 'https://fallback.domain.tld',
  },

更新 1:

好的,我做了一些进一步的测试,看起来它运行正常。 这就是让我失望的原因。

在构建过程中,我得到以下输出:

> [email protected] build
> nuxt build

ℹ [HPM] Proxy created: /api/  -> https://fallback.domain.tld
ℹ [HPM] Proxy rewrite rule created: "^/api/" ~> "/wp-json/wp/v2/"
ℹ Production build
ℹ Bundling only for client side
ℹ Target: static

这表明 /api/ 指向错误的(后备)url。 但是如果我稍后做一个 axios 得到这个代理,它实际上指向正确的 url (https://wp.domain.tld)

更新 2:

同样发生在这里,只是在这种情况下,URL 在运行时不会改变。

image: {     
    domains: [
      process.env.WP_BACKEND_URL || 'https://fallback.domain.tld',
    ]
  },

我认为通过 Plesk 设置的自定义环境变量在构建时不可用,但在运行时可用。这导致了我遇到的问题。如果我使用 .env 文件,环境变量在构建和运行时可用。

不知道如何解决这个问题或解决它。所以我想我又开始使用 .env 文件了。

nuxt.js plesk nuxtjs2 .env
1个回答
0
投票

我有一个带有 Plesk Obsidian 的 CentOS7 服务器,我的 nuxt 应用程序可以使用自定义环境变量而不是 .env 文件完美构建。

但是最近,我用运行 Ubuntu 20.x 的较新服务器替换了服务器,Plesk 似乎无法再通过环境变量读取,尽管我不明白为什么:/

将 .env 文件添加到应用程序根目录让我可以毫无问题地构建。

无论如何,对于 nuxt 2,您必须使用 dotenv 来访问环境变量。

// nuxt.config.js
require('dotenv').config

export default {
    proxy: {
        '/api/': {  
            target: process.env.WP_BACKEND_URL || 'https://fallback.domain.tld',
        },
    },  
}
© www.soinside.com 2019 - 2024. All rights reserved.