Vite/React & Node.js应用无法读取.env变量

1tuwyuhd  于 2023-08-04  发布在  Node.js
关注(0)|答案(1)|浏览(394)

我正在用vite/react和node.js创建一个全栈应用程序,我必须在我的后端使用一个API密钥来与GPT交互,但当然,我想在我的.env文件中使用它。
然而,无论我尝试什么,我的后端都将环境变量读取为undefined。
我已经在互联网上寻找解决方案,但没有任何工作,所以也许有像一些新的东西正在进行..
我的.env文件(与我的package.json在同一路径)

REACT_APP_API_KEY ='HERE IS MY SECRET KEY'
// or //
VITE_API_KEY ='HERE IS MY SECRET KEY'

字符串
和我的server.js(与.env文件在同一路径)

console.log(process.env.REACT_APP_API_KEY)
// or //
console.log(import.meta.env.VITE_API_KEY)


这两个选项都返回undefined..
我还想提一下,我确实安装了cross-env包。所以我完全不知道我做错了什么。

fwzugrvs

fwzugrvs1#

对于vite,我很确定你需要VITE_变量前缀,以便通过import.meta.env将其提供给前端:https://vitejs.dev/guide/env-and-mode.html#env-files
另一方面,后端节点的行为不同,并且不提供开箱即用的.env支持。我倾向于使用dotenv-flow作为节点预加载脚本。就像这样:

"scripts": {
    "start": "cross-env NODE_ENV=production node -r dotenv-flow/config index.mjs",
    "dev": "cross-env NODE_ENV=development nodemon -r dotenv-flow/config ",
    "test": "cross-env NODE_ENV=test mocha -r dotenv-flow/config -r app/configs/_testhooks.mjs app/**/*.spec.mjs",
    "test:coverage": "c8 npm run test",
    "migrate:make": "knex migrate:make --knexfile app/configs/knexfile.cjs -x mjs -- ",
    "migrate:latest": "knex migrate:latest --knexfile app/configs/knexfile.cjs",
    "migrate:rollback": "knex migrate:rollback --knexfile app/configs/knexfile.cjs"
  },

字符串
如果可能的话,请提供更多关于全栈场景的细节,也许还有其他方法比我介绍的更简单。

更新

你可以在PR in the sample projet上看到更多细节。

相关问题