面试题答案
一键面试配置文件结构
- 根目录创建
config
文件夹:在项目根目录下创建config
文件夹,用于存放不同环境的配置文件。 - 环境配置文件:
- 创建
config/dev.js
文件,用于开发环境配置,示例如下:
- 创建
module.exports = {
database: 'mongodb://localhost:27017/dev_db',
apiKey: 'dev_api_key'
};
- 创建 `config/test.js` 文件,用于测试环境配置,示例如下:
module.exports = {
database: 'mongodb://localhost:27017/test_db',
apiKey: 'test_api_key'
};
- 创建 `config/production.js` 文件,用于生产环境配置,示例如下:
module.exports = {
database: 'mongodb://prod_server:27017/prod_db',
apiKey: 'prod_api_key'
};
- 主配置文件:在
config
文件夹下创建index.js
文件,用于根据环境变量加载不同环境的配置,示例如下:
const env = process.env.NODE_ENV || 'dev';
const config = require(`./${env}`);
module.exports = config;
NPM 脚本写法
- package.json 中的脚本配置:在项目的
package.json
文件中添加以下 NPM 脚本:- 开发环境启动:
"scripts": {
"start:dev": "NODE_ENV=dev node app.js"
}
这里 app.js
是项目的入口文件,NODE_ENV=dev
设置环境变量为开发环境,这样在 app.js
中通过 require('./config')
加载的就是 dev.js
中的配置。
- 测试环境运行测试脚本:
"scripts": {
"test:test": "NODE_ENV=test mocha test/*.test.js"
}
假设使用 mocha
作为测试框架,test/*.test.js
是测试脚本的路径,NODE_ENV=test
设置环境变量为测试环境,使得测试脚本可以使用测试环境的配置。
- 生产环境启动:
"scripts": {
"start:prod": "NODE_ENV=production node app.js"
}
不同环境下运行相同测试脚本示例
假设测试脚本位于 test
文件夹下,以 mocha
为例:
- 开发环境运行测试:在终端执行
npm run test:test
,此时NODE_ENV
为test
,测试脚本会加载config/test.js
中的配置,如数据库连接字符串为mongodb://localhost:27017/test_db
,API 密钥为test_api_key
。 - 测试环境运行测试:同样执行
npm run test:test
,在测试环境服务器上,只要环境变量设置正常,测试脚本同样会加载config/test.js
中的配置进行测试。 - 生产环境(一般不会在生产环境直接运行测试,这里仅为示例完整性):如果要在生产环境运行测试(实际生产环境很少这样做),可在
package.json
中添加脚本"test:prod": "NODE_ENV=production mocha test/*.test.js"
,然后执行npm run test:prod
,测试脚本会加载config/production.js
中的配置。不过在实际生产中,通常会在预生产等类似环境先进行充分测试,而不是在生产环境直接运行测试。