node.js - codewithmosh NodeJS 课程几次要求我更改我的 NODE_ENV - 在 Windows 上不起作用?
问题描述
我现在正在学习“使用 mosh 编写代码”的 NodeJs 课程,并尝试更新我的 NODE_ENV 环境变量但没有成功……每次我在 CMD 甚至 Windows PowerShell 中更新它时,它似乎都做到了,然后什么也没有发生在课程中的 NodeJS Express Demo 构建中。我想我要问的问题是,你如何配置你的 ENV VAR?
编辑:谢谢你的回答,它确实改变了我的 NODE_ENV。但是摩根中间件由于某种原因仍然启动......这是代码:
const app = express();
const Joi = require('joi');
const helmet = require('helmet');
const morgan = require('morgan');
const config = require('config');
const dotenv = require('dotenv')
dotenv.config()
const logger = require('./logger');
console.log(`NODE_ENV: ${process.env.NODE_ENV}`);
console.log(`app ${app.get('env')}`);
app.use(express.json());
app.use(express.urlencoded({ extended: true }))
app.use(express.static('public'));
app.use(helmet());
if (app.get('env') === 'development') {
console.log('morgan is Enabled');
app.use(morgan('tiny'));
}```
解决方案
您需要的解决方案非常简单。
首先,您需要安装 Dotenv。你可以通过“npm install dotenv”来做到这一点
其次,您将在项目的根目录(与 package.json 文件相同的目录)中创建一个名为“.env”的文件
第三,您将在 .env 文件中放置这行代码(不要使用引号):“NODE_ENV = development”
注意,这里没有使用分号。
这是我的一个项目中的一个示例,说明我如何使用它。请注意,我确实在最新版本的 Node 中打开了模块,因此我的导入语句看起来与您可能习惯的不同......
import express from "express";
import colors from "colors";
import dotenv from "dotenv";
import morgan from "morgan";
import connectDB from "./config/db.js";
import { notFound, errorHandler } from "./middleware/errorMiddleware.js";
dotenv.config();
// Connect Database
connectDB();
const app = express();
// Middleware
// Only run Morgan in development mode
if (process.env.NODE_ENV === "development") {
app.use(morgan("dev"));
}
app.use(express.json());
// Routes
app.get("/", (req, res) => {
res.send("API is online...");
});
// Error and 404 handling Middleware
app.use(notFound);
app.use(errorHandler);
// Start server
const PORT = process.env.PORT || 5000;
app.listen(PORT, console.log(`Server is running on port ${PORT}`.green.bold));
推荐阅读
- aspnetboilerplate - BackgroundJobs 不允许您使用 IRepository 获取用户
- jquery - 尝试发布到 SharePoint 列表:“SP”未定义 ReferenceError:“SP”未定义
- java - 可以更改 UserAgent=SIPAUA/0.1.001 android.net.sip native android studio吗?
- bash - 使用 awscli 命令在 bash 中设置变量会返回找不到命令
- javascript - 我可以将数组传递给 HTML 吗?使用 php/javascript 创建动态 html 表
- django - Django - S3 - SQS 交付而不是检索
- gis - 用于获取所有邮政编码的 API:县、州和立法区
- c# - GMail API 错误:路径“{userId}/messages/send”缺少“userId”参数。这是一个错误吗?
- google-app-engine - 使用 Google Cloud 下载现有基于 AppEngine 的站点的源代码
- c# - Linq 查询“帮助”