23 javascript node.js typescript nestjs dotenv
我创建这个.env
文件:
TYPE=xxx
HOST=xxx,
PORT=xxx,
USERNAME=xxx,
PASSWORD=xxx,
DATABASE=xxx,
Run Code Online (Sandbox Code Playgroud)
在我的文件中,我以这种方式使用:
import * as dotenv from "dotenv";
dotenv.config();
export const typeOrmConfig: TypeOrmModuleOptions = {
port: process.env.PORT
}
Run Code Online (Sandbox Code Playgroud)
但我可以用我只能port
从变量.env
文件,我不能用变量的休息,谁能告诉我,为什么我不能用我的瓦尔的休息吗?
Hus*_*ain 43
其实你已经定义了 .env 文件的路径
像这样尝试
import * as dotenv from "dotenv";
dotenv.config({ path: __dirname+'/.env' });
Run Code Online (Sandbox Code Playgroud)
也试试这个
require('dotenv').config({ path: __dirname+'/.env' });
Run Code Online (Sandbox Code Playgroud)
根据需要更改 .env 文件的路径
参考:https : //www.npmjs.com/package/dotenv
Die*_*ola 39
如果你得到未定义的值并且如果你使用ES6,你需要按如下方式导入它(.env 文件必须位于项目根目录中):
如何在导入中使用 dotenv?
- 预加载 dotenv:node --require dotenv/config index.js (注意:您不需要使用此方法导入 dotenv)
- 导入 dotenv/config 而不是 dotenv (注意:您不需要调用 dotenv.config() 并且必须使用此方法通过命令行或环境变量传递选项)
- 创建一个单独的文件,该文件将首先执行配置,如 #133 的评论中所述
您必须导入项目的 app.ts 文件(首先) Express 示例:
应用程序.ts
//here
import 'dotenv/config'
import express from 'express'
import { userRouter } from './routes/user'
const app = express()
app.use(`/users`, userRouter)
app.listen(process.env.PORT, () => {
console.log(`running`)
})
Run Code Online (Sandbox Code Playgroud)
现在在您的项目中的任何地方使用它
阅读文档总是好的
我的项目已eslint
设置,所以我必须禁用该import/first
规则
/* eslint-disable import/first */
require('dotenv').config();
import Koa from 'koa';
import { Logger } from './utils/loggers';
import { app } from './app';
const LOGGER = Logger();
const port = parseInt(process.env.PORT as string, 10) || 8081;
const server = (server: Koa) => {
server.listen(port, () => {
LOGGER.info(`> Ready on http://localhost:${port}`);
});
};
server(app());
Run Code Online (Sandbox Code Playgroud)
我们还可以使用:
import 'dotenv/config'
Run Code Online (Sandbox Code Playgroud)
但
require('dotenv').config({path:path_to_dotenv});
Run Code Online (Sandbox Code Playgroud)
更加灵活。