概述
LoopBack应用程序具有以下类型的配置文件:
- 应用程序范围的配置文件 默认是
server/config.json
,也可以使用比如server/config.local.js
这样的js文件来设置那些不能使用简单JSON数据的配置对象。 - Data source配置文件 默认是
server/datasources.json
,也可以使用js文件,同上所述。 - 模型的Application级的配置 默认是
server/model-config.json
。 - Middleware配置 默认是
server/middleware.json
。 - components配置 默认为
server/component-config.json
。
注意: 使用* .js文件配置LoopBack应用程序仅在原始.json文件保留到位时才有效。 您应该覆盖.js文件中.json文件的值,而不是用.js文件替换.json文件。 也就是说,通过将默认的.json文件保留为空,所有配置都可以在.js文件中完成。
LoopBack将始终加载以下配置文件(如果存在):
server/config.json
.server/config.local.json
orserver/config.local.js
.server/datasources.json
server/datasources.local.json
orserver/datasources.local.js
server/model-config.json
server/model-config.local.json
orserver/model-config.local.js
server/middleware.json
server/middleware.local.json
orserver/middleware.local.js
server/component-config.json
server/component-config.local.json
orserver/component-config.local.js
此外,当设置NODE_ENV环境变量时,LoopBack将从以下位置加载配置:
server/config.env.json/js
server/datasources.env.json/js
server/model-config.env.json/js
server/middleware.env.json/js
server/component-config.env.json/js
其中_env
_是NODE_ENV的值(通常是“development”,“test”或“production”)。
这使您可以为开发,测试和生产环境设置配置。
要在localhost上进行测试,可以在shell中设置NODE_ENV变量或任何其他环境变量的值。
节点服务器使用shell中的相同变量。
您可以使用_process.env.NODE_ENV
_访问代码中的NODE_ENV变量。
注意: LoopBack应用程序可以加载多个配置文件,这些文件可能会相互冲突。 具有最高优先级的文件设置的值将始终生效。 优先事项是:
- 特殊环境配置 基于NODE_ENV的值; 例如,
server/config.staging.json
。- 本地配置文件 比如:
server/config.local.json
。- 默认配置文件 比如:
server/config.json
。
应用程序范围的配置文件
在server/config.json
中定义应用程序服务器端设置
可以使用以下方法覆盖config.json
中的配置:
- 使用
config.local.js
或config.local.json
- 使用
config.env.js
或config.env.json
,这里的env
是NODE_ENV变量值,比如config.production.js
。
重要: 附加文件只能使用值类型(字符串,数字)覆盖顶级键。 不支持嵌套对象和数组。
例如:
config.production.js
module.exports = {
host: process.env.CUSTOM_HOST,
port: process.env.CUSTOM_PORT
};
确保不返回堆栈跟踪
处于生产环境下,确保堆栈跟踪关闭以进行生产。
- 使用 NODE_ENV production 指定生产环境。
- 在
server/middleware.production.json
里加上下面的语句:
"final:after": {
"strong-error-handler": {}
}
注意: Application生成器为您创建一个具有上述配置的middleware.development.json文件,因此您所要做的就是确保NODE_ENV环境变量不是开发的。
禁用API Explorer
在开发的时候使用API Explorer十分方便,但是在生产环境中往往需要关闭。
- 使用 NODE_ENV production 指定生产环境。
- 在
server/component-config.production.json
添加下面语句。
{
"loopback-component-explorer": null
}
在HTTP响应中包含堆栈跟踪
默认情况下,LoopBack 3.0应用程序从HTTP响应中排除错误堆栈跟踪(通常在生产中)。 对于开发和调试,您可能希望包含它们; 为此,将NODE_ENV
环境变量设置为development
,以便应用程序使用middleware.development.json
。
此文件包括以下将包含HTTP响应中的堆栈跟踪:
{
"final:after": {
"strong-error-handler": {
"params": {
"debug": true,
"log": true
}
}
}
}
数据库配置
可以使用以下方法覆盖datasources.json
中的配置:
- 使用
datasources.local.js
或datasources.local.json
- 使用
datasources.env.js
或datasources.env.json
,这里的env
是NODE_ENV变量值,比如datasources.production.json
。
例如:
datasources.json
{
db: {
connector: 'memory'
}
}
datasources.production.json
{
db: {
connector: 'mongodb',
database: 'myapp',
user: 'myapp',
password: 'secret'
}
}
datasources.production.js
module.exports = {
db: {
connector: 'mongodb',
hostname: process.env.DB_HOST,
port: process.env.DB_PORT || 27017,
user: process.env.DB_USER,
password: process.env.DB_PASSWORD,
database: 'myapp',
}
在上面的例子中,将加载运行export PRODUCTION = true
(或者为Windows设置PRODUCTION = true`)数据源。
获取环境变量
MacOS and Linux
使用此命令设置环境变量并在一个命令中运行应用程序:
$ MY_CUSTOM_VAR="some value" node .
或
$ export MY_CUSTOM_VAR="some value"
$ node .
然后,此变量可作为process.env.MY_CUSTOM_VAR
提供给您的应用程序。
Windows
C:\> set MY_CUSTOM_VAR="some value"
C:\> node .