I am trying to work with .env files natively, as starting from Node.jsv20 (I am currently using version v22.14.0), it is no longer necessary to install libraries like dotenv to manage environment variables.
However, when building my container, I encounter an error. Here is how my project is structured:
project/
├── .env
├── docker-compose.yml
└── backend/
└── server/
├── server.js
└── config.js
error:
node:internal/process/per_thread:262
server-1 | _loadEnvFile();
server-1 | ^
server-1 |
server-1 | Error: ENOENT: no such file or directory, open '.env'
server-1 | at loadEnvFile (node:internal/process/per_thread:262:7)
server-1 | at file:///app/server/server.js:8:1
server-1 | at ModuleJob.run (node:internal/modules/esm/module_job:234:25)
server-1 | at async ModuleLoader.import (node:internal/modules/esm/loader:473:24)
server-1 | at async asyncRunEntryPointWithESMLoader (node:internal/modules/run_main:122:5) {
server-1 | errno: -2,
server-1 | code: 'ENOENT',
server-1 | syscall: 'open',
server-1 | path: '.env'
server-1 | }
.env
NODE_LOCAL_PORT=4000
Server
import express from 'express';
import man from 'man';
import cors from 'cors';
process.loadEnvFile('../../.env')
const app = express();
app.use(cors());
app.use(man('dev'));
app.get('/', (req, res) => {
res.json({ frutas: ['manzana', 'pera', 'limón', 'mango', 'kiwi', 'melón', 'papaya'] });
});
const PORT = process.env.NODE_LOCAL_PORT || 4000;
app.listen(PORT, () => {
console.log(`Server started on port ${PORT}