Node.js Lambda enoint:没有这样的文件或目录

Node.js Lambda enoint:没有这样的文件或目录,node.js,lambda,filepath,Node.js,Lambda,Filepath,我试图读取AWS Lambda函数(节点6.10.0)中的.yml文件 我已经尝试了所有可能的方法,但总是得到enoint:没有这样的文件或目录 该文件位于同一文件夹中,并且是.yml文件,因此要求(“”)也不起作用 上述代码的结果如下: /Users\marcus\Documents\Workspace\proak-api\proak-api\api\lib/gameOptions.yml /var/task/gameOptions.yml /gameOptions.yml ./gameOpt

我试图读取AWS Lambda函数(节点6.10.0)中的.yml文件

我已经尝试了所有可能的方法,但总是得到
enoint:没有这样的文件或目录

该文件位于同一文件夹中,并且是
.yml
文件,因此
要求(“”)
也不起作用

上述代码的结果如下:

/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']
解析路径

path.resolve(process.env.LAMBDA_TASK_ROOT, '_optimize', process.env.AWS_LAMBDA_FUNCTION_NAME, 'mySubFolder/myFile.json')
如果不使用minify,还需要将.yml文件编译到Lambda中,以编译到函数中

RequireRequire('file.yml')会给您一个错误。所以你让我:

var fs = require('fs')
  , yaml = require('js-yaml');

    require.extensions['.yaml'] = 
    require.extensions['.yml'] = function(module, filename) {
      var content = fs.readFileSync(filename, 'utf8');
      // Parse the file content and give to module.exports
      content = yaml.load(content);
      module.exports = content;
    };
var fs = require('fs')
  , yaml = require('js-yaml');

    require.extensions['.yaml'] = 
    require.extensions['.yml'] = function(module, filename) {
      var content = fs.readFileSync(filename, 'utf8');
      // Parse the file content and give to module.exports
      content = yaml.load(content);
      module.exports = content;
    };