nest.js学习笔记

nest.js学习笔记

Leslie Shi

学习笔记

  • 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"//这一块在package.json中进行查找
],
"runtimeExecutable": "npm",
"runtimeVersion": "18.17.0",//根据本地node版本设置
"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查找端口是否占用两个,再看配置项是否为热重载,关闭热重载以后重新启动。

评论