Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在nodejs和typescript中使用dotenv模块_Javascript_Node.js_Typescript_Dotenv - Fatal编程技术网

Javascript 在nodejs和typescript中使用dotenv模块

Javascript 在nodejs和typescript中使用dotenv模块,javascript,node.js,typescript,dotenv,Javascript,Node.js,Typescript,Dotenv,我创建了一个名为.env的文件: DATABASE_URL='mongodb://localhost:27017/Fimstan' SERVER_PORT=3000 现在我想在app.ts中使用它来使用SERVER\u端口 import * as dotenv from 'dotenv'; dotenv.config(); app.listen(process.env.SERVER_PORT, () => { console.log(`Server Run On Port ${p

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

DATABASE_URL='mongodb://localhost:27017/Fimstan'
SERVER_PORT=3000
现在我想在
app.ts
中使用它来使用
SERVER\u端口

import * as dotenv from 'dotenv';
dotenv.config();

 app.listen(process.env.SERVER_PORT, () => {
  console.log(`Server Run On Port ${process.env.SERVER_PORT}`);
});
但它在终端中向我显示以下消息:
服务器在未定义的端口上运行

现在有什么问题?如何在项目中使用
.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"));

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

  • 确保根项目文件夹中有package.json文件和.env文件
  • 在根项目文件夹路径的终端中,写下“npm i dotenv”(注意:它已经包含Typescript中所需的定义)
  • 现在转到文件:
  • 另外,请注意,从process.env.variableName执行赋值时,您会得到类型(字符串|未定义)。
    (我假设您使用的是node、dotenv和typescript的最新版本,但我认为旧版本之间没有太大区别)。

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

  • 确保根项目文件夹中有package.json文件和.env文件
  • 在根项目文件夹路径的终端中,写下“npm i dotenv”(注意:它已经包含Typescript中所需的定义)
  • 现在转到文件:
  • 另外,请注意,从process.env.variableName执行赋值时,您会得到类型(字符串|未定义)。
    (我假设您使用的是node、dotenv和typescript的最新版本,但我认为旧版本之间没有太大区别)。

    尝试
    从“dotenv”导入dotenv操作?或从'dotenv'导入{config}
    然后仅调用
    config()
    @timotgl not worked可能无法找到您的
    .env
    文件。尝试显式地告诉它文件的位置:
    config({path:resolve({uuu dirname,'...env')})(在本例中,它是上一个目录)。编辑:您需要从“路径”导入{resolve}.env
    (操作系统没有隐藏的文件扩展名干扰),那么您尝试了正确的加载方式。可能还有其他问题。请发布您的目录结构,或提示此
    .env
    文件的位置。请尝试从“dotenv”导入dotenv操作?或从'dotenv'导入{config}
    然后仅调用
    config()
    @timotgl not worked可能无法找到您的
    .env
    文件。尝试显式地告诉它文件的位置:
    config({path:resolve({uuu dirname,'...env')})(在本例中,它是上一个目录)。编辑:您需要从“路径”导入{resolve}.env
    (操作系统没有隐藏的文件扩展名干扰),那么您尝试了正确的加载方式。一定是其他地方出了问题。请发布您的目录结构,或提示此
    .env
    文件的位置。
    
        // root/.env
    
        SERVER_PORT=3000
        
        // root/app.ts
        import dotenv from 'dotenv';
        dotenv.config();
        console.log(`Server Run On Port ${process.env.SERVER_PORT}`);