使用nodejs和typescript中的dotenv模块



我创建一个名为.env:的文件

DATABASE_URL='mongodb://localhost:27017/Fimstan'
SERVER_PORT=3000

现在我想在CCD_ 2中使用它来使用CCD_。

import * as dotenv from 'dotenv';
dotenv.config();
app.listen(process.env.SERVER_PORT, () => {
console.log(`Server Run On Port ${process.env.SERVER_PORT}`);
});

但它在终端上显示了这条消息:Server Run On Port undefined

现在出什么问题了?如何在我的项目中使用.env内容???

import express, { Request, Response, NextFunction } from 'express';
import * as dotenv from 'dotenv';
import http from 'http';
import Logger from './core/logger/logger';
import bodyParser from 'body-parser';
import mongoose from 'mongoose';
import passport from 'passport';
import cors from 'cors';
import redisClient from 'redis';
import path from 'path';
import configuration from './config/index';
import cookieParser from 'cookie-parser';
process.on('uncaughtException', (e) => {
Logger.error(e);
});
dotenv.config();

const app: express.Application = express();

app.listen(process.env.SERVER_PORT, () => {
console.log(`Server Run On Port ${process.env.SERVER_PORT}`);
});
app.get('/', (req, res, next) => {
console.log('Hello')
})
mongoose.Promise = global.Promise;
mongoose.connect(configuration.databaseConfig.url, {
useNewUrlParser: true,
useCreateIndex: true,
useUnifiedTopology: true,
});

app.use(cors());
app.use(bodyParser.json());
app.use(express.static(path.join(__dirname, "public")));
app.use(bodyParser.urlencoded({ extended: true }));
app.use(cookieParser("SchoolManagerSecretKey"));

首先,您需要确保正确设置了重要部分,以便正常工作。这就是为什么我将忽略其余的导入和应用程序逻辑。试着测试我单独描述的解决方案,看看这是否能解决你的问题。

  1. 确保根项目文件夹中有package.json文件和.env文件
  2. 在根项目文件夹路径中的终端中写入"npm i dotenv"(注意:它已经包含Typescript中所需的定义(
  3. 现在转到文件:

// root/.env
SERVER_PORT=3000

// root/app.ts
import dotenv from 'dotenv';
dotenv.config();
console.log(`Server Run On Port ${process.env.SERVER_PORT}`);

另外,请注意,在从process.env.variableName进行赋值时,会得到类型(string|undefined(。(我假设您使用的是node、dotenv和typescript的最新版本,但我认为旧版本没有太大区别(。

最新更新