Lambda ENOENT:没有这样的文件或目录

问题描述 投票:0回答:1

我正在尝试在AWS Lambda函数(节点6.10.0)中读取文件.yml。

console.log(__dirname + '/gameOptions.yml');
console.log(path.resolve('./gameOptions.yml'));
console.log(path.resolve('/gameOptions.yml'));
console.log('./gameOptions.yml');
console.log(process.cwd() + '/api/lib/gameOptions.yml');

let doc = yaml.safeLoad(fs.readFileSync(path.resolve('./gameOptions.yml'), 'utf8'));

我已经尝试了所有可能的方法,但总是得到qazxsw poi。

该文件在同一个文件夹,它是一个ENOENT: no such file or directory所以.yml也不起作用。

上述代码的结果如下:

require('')

它在本地工作。

node.js lambda filepath
1个回答
1
投票

要解决这个问题,您需要关注两件事:

优化如果您正在使用某些东西来缩小代码,例如。无服务器-插件-优化:

包括不要缩小的文件。

/Users\marcus\Documents\Workspace\proak-api\proak-api\api\lib/gameOptions.yml
/var/task/gameOptions.yml
/gameOptions.yml
./gameOptions.yml
/var/task/api/lib/gameOptions.yml

解决路径。

  myLambda:
    handler: mySubFolder/myLambda.handler
    optimize:
      includePaths: ['mySubFolder/myFile.json']

如果你不使用minify,你还需要将.yml文件放入Lambda,以编译成函数。

要求require('file.yml')会给您一个错误。所以你让:

path.resolve(process.env.LAMBDA_TASK_ROOT, '_optimize', process.env.AWS_LAMBDA_FUNCTION_NAME, 'mySubFolder/myFile.json')
© www.soinside.com 2019 - 2024. All rights reserved.