node.js应用不读取.env文件/linux aws ec2实例中的文件/变量

发布于 2025-01-30 02:43:52 字数 1408 浏览 0 评论 0原文

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

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

i然后在该新创建的文件中粘贴了此文件

[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> sudo Systemctl start nodeserver.service 并提出一个请求,我获得了错误“ typeError [err_http_invalid_header_value]:nuffalid value \“ nuffined \” for header \“ plaid-client-id \ id \ n \ n

,如果我使用我的服务器启动我的服务器,命令plaid_client_id =&lt; env_var&gt; plaid_secret =&lt; env_var&gt&gt; 。

变量

​脚本

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

I'm new to AWS and I've started and configured an EC2 instance with linux.
I made a service worker to auto start the program and told it where the .env file is.
Below is how I made the service worker file

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

I then pasted this inside that newly created file

[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

To create the .env file I ran this command
sudo vim /home/ec2-user/earmark-backend/.env

inside the .env file I pasted this code

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>

Then when I start the service worker via sudo systemctl start NodeServer.service and make a request I get the error "TypeError [ERR_HTTP_INVALID_HEADER_VALUE]: Invalid value \"undefined\" for header \"PLAID-CLIENT-ID\"\n

However if I start my server with the command PLAID_CLIENT_ID=<env_var> PLAID_SECRET=<env_var> PLAID_ENV=sandbox ...(rest of env vars) node ./dist/api/server.js it works and can read the env variables.

Anyone have any idea why it's not able to read my .env file?

Also, side question: I'd prefer to have my service worker ExecStart command run a bash script, but I'm not exactly sure how I'd setup the script. I have a file start.sh and inside I have

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

It's not working though, how would I properly format my .sh file to run those commands on start?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文