将目录附加到 Amazon Lambda 环境变量 $NODE_PATH

dev*_*svd 5 amazon-web-services node.js aws-lambda

根据文档的默认环境变量:

NODE_PATH:/opt/nodejs/node8/node_modules/:/opt/nodejs/node_modules:$LAMBDA_RUNTIME_DIR/node_modules
Run Code Online (Sandbox Code Playgroud)

我想将我的自定义目录附加到它(不是覆盖所有)

NODE_PATH:$NODE_PATH:/opt/nodejs/mycustom-directory
Run Code Online (Sandbox Code Playgroud)

我从 lambda 控制台尝试了上面的内容,它覆盖了所有内容。$NODE_PATH作为字符串添加。它没有解析$NODE_PATH

打印 env 时得到的输出:

NODE_PATH=$NODE_PATH:/opt/nodejs/mycustom-directory
Run Code Online (Sandbox Code Playgroud)

类似的问题,但仍然没有解决方案:AWS lambda 添加 PATH 变量?

小智 1

我也遇到了同样的问题。我编写了一段代码来检查 lambda 函数是否应用了 shell 变量扩展,并找出它们不应用。

我将环境变量设置FOO$NODE_PATH

然后,运行检查代码(在 lambda 函数中):

const { FOO } = process.env;
exports.lambdaHandler = async (event, context, callback) => {
  console.log(FOO);
};
Run Code Online (Sandbox Code Playgroud)

输出是:

2019-02-22T08:29:05.714Z    cde21239-628f-4a79-b046-6a14f177f59e    $NODE_PATH
Run Code Online (Sandbox Code Playgroud)

我只是将整个重写NODE_PATH(my custom library path):/opt/nodejs/lib:/opt/nodejs/node8/node_modules/:/opt/nodejs/node_modules:/var/runtime/node_modules

默认值的NODE_PATH解释如下:

https://docs.aws.amazon.com/lambda/latest/dg/current-supported-versions.html