我已经使用这个优秀的模板来使用Node和typescript serverless/lib/plugins/create/templates/aws-nodejs-typescript at master · serverless/serverless · GitHub
在处理程序定义中,我试图引用环境变量
当我打印出变量时,没有插值。变量仍然是带有大括号的${env.CONFIG_TABLE}
“CONFIG_TABLE”:“${env.CONFIG_TABLE}我想使用环境变量进行CI和.env本地开发。
const serverlessConfiguration: AWS = {
service: 'trial-service',
frameworkVersion: '2',
useDotenv: true,
我在处理程序的环境部分设置了变量。文件functions/my-function/index.ts是
import schema from './schema';
import { handlerPath } from '@libs/handlerResolver';
export default {
handler: `${handlerPath(__dirname)}/handler.main`,
events: [
{
http: {
method: 'post',
path: 'make-payment',
request: {
schema: {
'application/json': schema
}
}
}
}
],
environment: {
CONFIG_TABLE : "${env.CONFIG_TABLE}",
}
}
2条答案
按热度按时间xjreopfe1#
解决方案是访问process.env。这将从.env文件和环境变量中读取。
oxalkeyp2#
在对此进行了一番挣扎之后,我意识到,当迁移到类型脚本配置时,必须以稍微不同的方式考虑配置中的环境变量**。
首先,让我们区分两组环境变量:
1.部署配置
1.功能配置
让我们先讨论(2),因为它是最简单的。在.env文件中解密这些变量并设置
useDotEnv
标志。无服务器(或dotenv插件)将负责将这些变量加载到无服务器函数中的process.env中,以便在运行时访问。我相信这个问题更想集中在(1)。在部署配置期间如何访问每个环境变量?
答:你不用dotenv。
你应该设置的唯一的东西是你的STAGE变量:
这允许您在部署时访问
process.env['STAGE']
,以按阶段自定义部署。这里有一个示例,说明如何在serverless.ts文件中抽象此内容。现在,您可以在Serverless定义中访问每个环境的配置。
这具有以下优点: