Warm tip: This article is reproduced from serverfault.com, please click

node.js-环境变量不适用于Typescript和NodeJS

(node.js - Environment variables not working with Typescript and NodeJS)

发布于 2020-11-29 12:22:01

我的process.env文件具有以下内容:

DB_NAME = hello

当我运行index.ts具有以下内容的文件时:

import { MikroORM } from '@mikro-orm/core';
import { __prod__ } from './constants';
import { Post } from './entities/Post';
import microConfig from './mikro-orm.config';

console.log(`console log is : ${process.env.DB_NAME}`);
const main = async () => {
  const orm = await MikroORM.init(microConfig);

  const post = orm.em.create(Post, { title: 'my first post' }); 
  orm.em.persistAndFlush(post); 
};

main();

它给出process.env.DB_NAMEas的值未定义。

我的package.json设置如下:

{
  "name": "shreddit-backend",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "start": "node dist/index.js",
    "dev": "nodemon dist/index.js",
    "watch": "tsc -w",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "@types/node": "^14.14.10",
    "nodemon": "^2.0.6",
    "ts-node": "^9.0.0",
    "typescript": "^4.1.2"
  },
  "dependencies": {
    "@mikro-orm/cli": "^4.3.2",
    "@mikro-orm/core": "^4.3.2",
    "@mikro-orm/migrations": "^4.3.2",
    "@mikro-orm/postgresql": "^4.3.2",
    "pg": "^8.5.1"
  },
  "mikro-orm": {
    "useTsNode": true,
    "configPaths": [
      "./src/mikro-orm.config.ts",
      "./dist/mikro-orm.config.js"
    ]
  }
}

我什至尝试使用,dotenv但这也无法解决问题。我想念什么吗?非常感谢。

Questioner
Arsh Sharma
Viewed
11
Tibebes. M 2020-11-29 20:39:15

process.env文件不会自动加载吗?

不,你将必须使用dotenv.config以下内容(在脚本的开头)。

require('dotenv').config({ path: './process.env' })

// the rest of your code

请注意,如果.config你的文件仅被命名'.env'(实际上是用于此目的的标准名称),则可以简单地不带任何参数地调用-'process.env'