我已经使用这个优秀的模板开始使用Node和typescript无服务器/lib/plugins/create/templates/aws-nodejs-typescript at master ·无服务器/无服务器· GitHub
在处理程序定义中,我尝试引用环境变量
当我打印出变量时,没有插值。变量仍然是带括号的${env.CONFIG_TABLE
“CONFIG_TABLE”:“${env.CONFIG_TABLE}我希望将环境变量用于CI,将.env用于本地开发。
const serverlessConfiguration: AWS = {
service: 'trial-service',
frameworkVersion: '2',
useDotenv: true,
我在处理程序的环境部分设置了变量。
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条答案
按热度按时间ztyzrc3y1#
解决方案是访问process.env。这将从.env文件和环境变量中读取。
ldioqlga2#
经过一番努力之后,我意识到,当转到typescript配置时,必须稍微改变一下对config中的环境变量的看法。
首先,让我们区分两组环境变量:
1.部署配置
1.功能配置
让我们先讨论(2),因为它是最简单的。在一个. env文件中声明这些变量,并设置
useDotEnv
标志。serverless(或dotenv插件)将负责将这些变量加载到进程. env中,在运行时可以访问。我相信这个问题更倾向于集中在(1)。在部署配置期间如何访问每个环境的变量?
答:您不使用dotenv。
这允许您在部署时访问
process.env['STAGE']
,以便在每个阶段定制您的部署。下面是一个示例,说明如何将其抽象到serverless. ts文件中。现在可以在无服务器定义中访问每个环境的配置。
这具有以下优点: