学习笔记
- 1.vscode调试node,
- 2.dotenv & @nest/config配置
1 调试
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| { "version": "0.2.0", "configurations": [ { "name": "Launch via NPM", "request": "launch", "runtimeArgs": [ "run-script", "debug" ], "runtimeExecutable": "npm", "runtimeVersion": "18.17.0", "internalConsoleOptions": "neverOpen", "skipFiles": [ "<node_internals>/**" ], "type": "node" } ] }
|
2 dotenv & @nest/config配置
2.1 dotenv
一个零依赖的模块,它的主要功能是从.env文件中加载环境变量,从而读取不同的数据库。
如何使用:
首先,你需要在你的项目中安装dotenv。你可以通过npm或者yarn来安装。以下是安装命令:
1 2 3 4 5 6
| # 使用npm npm install dotenv # 使用yarn yarn add dotenv # 在入口文件中 require('dotenv').config();// 引入dotenv模块
|
2.2 nest.js中的config模块
1 2 3 4 5 6 7 8 9 10
| //npm i --save @nestjs/config 新建.env文件 //安装过后进行导入
import { Module } from '@nestjs/common'; import { ConfigModule } from '@nestjs/config'; //ConfigModule.forRoot()可以加属性global进行全局使用 @Module({ imports: [ConfigModule.forRoot()], }) export class AppModule {}
|
进阶方案,在根目录新建config文件夹再新建config.yml文件,在src文件下新建configuration
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| 1.在configuration.ts中 import { readFileSync } from 'fs'; import * as yaml from 'js-yaml'; import { join } from 'path'; const env = process.env.NODE_ENV;
const YAML_CONFIG_NAME = `${env == 'development' || env == undefined ? 'development' : 'production'}.config.yml`; const filepath = join(__dirname, '../config', YAML_CONFIG_NAME);
//因为configModule的load是需要导入一个函数,所以这里需要返回一个函数 export default (): any => { return yaml.load(readFileSync(filepath, 'utf8')); };
2.在app.module.ts中 import configuration from './configuration';
imports: [ UserModule, ConfigModule.forRoot({ isGlobal: true, load: [configuration], }), ],
|
问题记录:在上述配置完成后进行启动项目,如果是按cli架构形成的,会发现process.env.NODE_ENV为undefined,
这时候在package.json中启动项后面加 NODE_ENV=development;再启动还是不可以的话,建议安装across env 。如果还是打印为空,此时查看nest 启动项是否为nest build再启动的。此时再启动会发现端口占用,这时候打开cmd查找端口是否占用两个,再看配置项是否为热重载,关闭热重载以后重新启动。