安装node-config
和@types/config
后:
yarn add config
yarn add --dev @types/config
中的说明添加配置
// default.ts
export default {
server: {
port: 4000,
},
logLevel: 'error',
};
当我尝试在我的应用中使用时:
import config from 'config';
console.log(config.server);
我收到错误:
src/app.ts(19,53): error TS2339: Property 'server' does not exist on type 'IConfig'.
答案 0 :(得分:5)
我采用的方法稍有不同-在JavaScript中定义变量,然后在TypeScript中访问它们。
使用以下文件夹结构:
├── config
│ ├── custom-environment-variables.js
│ ├── default.js
│ ├── development.js
│ └── production.js
└── server
├── config.ts
└── main.ts
我在根config/
文件夹中定义配置。例如:
// config/default.js
module.exports = {
cache: false,
port: undefined // Setting to undefined ensures the environment config must define it
};
// config/development.js
module.exports = {
port: '3000'
}
// config/production.js
module.exports = {
cache: true
}
// config/custom-environment-variables.js
module.exports = {
port: 'PORT'
}
现在,在TypeScript领域中,我定义一个接口以提供更好的自动完成和文档,并编写一些桥接代码以将配置从node-config
拉入我的配置映射:
// server/config.ts
import nodeConfig from 'config';
interface Config {
/** Whether assets should be cached or not. */
cache: boolean;
/** The port that the express server should bind to. */
port: string;
}
const config: Config = {
cache: nodeConfig.get<boolean>('cache'),
port: nodeConfig.get<string>('port')
};
export default config;
最后,我现在可以在任何TypeScript代码中导入并使用配置变量。
// server/main.ts
import express from 'express';
import config from './config';
const { port } = config;
const app = express();
app.listen(port);
此方法具有以下优点:
node-config
提供的丰富且经过考验的功能,而无需重新发明轮子答案 1 :(得分:3)
config.get
实用程序可用于获取配置值,如下所示:
import config from 'config';
const port: number = config.get('server.port');
答案 2 :(得分:1)
我使用IConfig
界面,所以我可以先设置配置路径:
import { IConfig } from 'config';
export function dosomething() {
process.env["NODE_CONFIG_DIR"] = 'path to config dir';
//using get
const config: IConfig = require("config");
const port = config.get('server.port');
console.log('port', port);
//using custom schema
const config2: { server: { port: number } } = require("config");
console.log('config2.server.port', config2.server.port);
}
//port 4000
//config2.server.port 4000
答案 3 :(得分:1)
从上一本书开始,我仍然遇到麻烦,config
无法从server
找到default.ts
密钥。
以下是我使用npm config模块的方式。将export default {
更新为export =
:
// default.ts
export = {
server: {
port: 4000,
},
logLevel: 'error',
};
在应用内的使用方式[相同]:
import config from 'config';
console.log(config.get('server'));
答案 4 :(得分:1)
使用此“从'config'导入*作为配置;”而不是“从'config'导入配置;”
import * as config from 'config';
const port = config.get('server.port');
console.log('port', port);
// port 4000
config / development.json
{
"server": {
"port": 4000
}
}
并设置NODE_ENV = development
export NODE_ENV=development
注意:如果使用默认值,则无需设置NODE_ENV
答案 5 :(得分:0)
您可以使用 any
返回类型。
const serverConfig: any = config.get('server');