【问题标题】:Node.js app not reading .env file/variables inside linux aws ec2 instanceNode.js 应用程序未读取 linux aws ec2 实例中的 .env 文件/变量
【发布时间】:2022-07-13 17:34:13
【问题描述】:

我是 AWS 的新手,我已经使用 linux 启动并配置了一个 EC2 实例。 我让服务人员自动启动程序并告诉它 .env 文件在哪里。 以下是我制作 service worker 文件的方法

sudo vim /etc/systemd/system/NodeServer.service

然后我将其粘贴到新创建的文件中

[Unit]
Description=My Node Server
After=multi-user.target

[Service]
ExecStart=/usr/bin/node /home/ec2-user/earmark-backend/dist/api/server.js
Restart=always
RestartSec=10
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=earmark-backend-server
User=ec2-user
EnvironmentFile=/home/ec2-user/earmark-backend/.env

[Install]
WantedBy=multi-user.target

为了创建 .env 文件,我运行了这个命令 sudo vim /home/ec2-user/earmark-backend/.env

在 .env 文件中我粘贴了这段代码

PLAID_CLIENT_ID=<env_var>

PLAID_SECRET=<env_var>

PLAID_ENV=sandbox

PLAID_PRODUCTS=auth,transactions

PLAID_COUNTRY_CODES=US,CA

PLAID_REDIRECT_URI=<env_var>

PORT=8080

URL=<env_var>

然后当我通过sudo systemctl start NodeServer.service 启动服务工作者并发出请求时,我收到错误"TypeError [ERR_HTTP_INVALID_HEADER_VALUE]: Invalid value \"undefined\" for header \"PLAID-CLIENT-ID\"\n

但是,如果我使用命令 PLAID_CLIENT_ID=&lt;env_var&gt; PLAID_SECRET=&lt;env_var&gt; PLAID_ENV=sandbox ...(rest of env vars) node ./dist/api/server.js 启动我的服务器,它可以工作并且可以读取环境变量。

有人知道为什么它无法读取我的 .env 文件吗?

另外,附带问题:我更希望让我的服务工作者 ExecStart 命令运行一个 bash 脚本,但我不确定如何设置该脚本。我有一个文件start.sh,里面有

#!/usr/bin/env bash
cd /home/ec2-user/earmark-backend
npm i
npm run clean
npm run build
npm run start

但它不起作用,我将如何正确格式化我的 .sh 文件以在启动时运行这些命令?

【问题讨论】:

  • 看起来您以 root 身份创建了 .env 文件,但正在以 ec2 用户(无法读取 root 拥有的文件)身份运行 Node.js 服务。
  • @jarmod 谢谢!我删除了 .env 文件并使用命令 vim /home/ec2-user/earmark-backend/.env 重新制作了它(删除了 sudo),它成功了!

标签: node.js linux amazon-web-services amazon-ec2


【解决方案1】:

我也面临同样的问题。不能.env文件,请任何解决方案。

【讨论】:

    猜你喜欢
    • 2020-11-04
    • 2021-09-08
    • 2021-06-14
    • 2018-10-17
    • 1970-01-01
    • 2012-07-16
    • 1970-01-01
    • 2017-04-27
    • 1970-01-01
    相关资源
    最近更新 更多