2017-12-26 43 views
1

Serverless Framework에서 AWS 람다 함수 배포에 문제가 있습니다. 나는 grpc 패키지가 필요한 @google-cloud-firestore npm 패키지를 사용합니다. I 이해로AWS 람다 오류 : 현재 시스템에 설치되지 않았기 때문에 gRPC 바이너리 모듈을로드하지 못했습니다.

{ 
    "errorMessage": "Failed to load gRPC binary module because it was not installed for the current system\nExpected directory: node-v48-linux-x64-glibc\nFound: [node-v59-darwin-x64-unknown]\nThis problem can often be fixed by running \"npm rebuild\" on the current system\nOriginal error: Cannot find module '/var/task/node_modules/grpc/src/node/extension_binary/node-v48-linux-x64-glibc/grpc_node.node'", 
    "errorType": "Error", 
    "stackTrace": [ 
    "Found: [node-v48-linux-x64-unknown]", 
    "This problem can often be fixed by running \"npm rebuild\" on the current system", 
    "Original error: Cannot find module '/var/task/node_modules/grpc/src/node/extension_binary/node-v48-linux-x64-glibc/grpc_node.node'", 
    "Object.<anonymous> (/var/task/node_modules/grpc/src/grpc_extension.js:44:17)", 
    "Module._compile (module.js:570:32)", 
    "Object.Module._extensions..js (module.js:579:10)", 
    "Module.load (module.js:487:32)", 
    "tryModuleLoad (module.js:446:12)", 
    "Function.Module._load (module.js:438:3)", 
    "Module.require (module.js:497:17)", 
    "require (internal/module.js:20:19)", 
    "Object.<anonymous> (/var/task/node_modules/grpc/src/client.js:38:12)", 
    "Module._compile (module.js:570:32)", 
    "Object.Module._extensions..js (module.js:579:10)", 
    "Module.load (module.js:487:32)", 
    "tryModuleLoad (module.js:446:12)", 
    "Function.Module._load (module.js:438:3)", 
    "Module.require (module.js:497:17)", 
    "require (internal/module.js:20:19)" 
    ] 
} 

그래서, 람다 타겟 node-v48-linux-x64-glibc

npm i -S grpc --target=6.4.0 --target_arch=x64 --target_platform=linuxnode-v48-linux-x64-unknownnode-v59-darwin-x64-unknown 변경 만했다 타이핑 내장 GRPS를 필요

기능의 실행은 에러가 발생.

unknown을 어떻게 변경합니까? glibc?

도움이 될 것입니다.

+0

가있을 수 있습니다 더 나은 솔루션,하지만 (HTTP를 [람다 실행 환경 AMI]을 사용하여 만든 시스템에서 모듈을 구축하는 것입니다 마음에 오는 명백한 : // docs.aws.amazon.com/lambda/latest/dg/current-supported-versions.html). –

답변

1

나는 에 포함 된 --target_libc=glibc을 포함하여 작동하는 것과 비슷한 것을 얻었습니다. documentation for node-pre-gyp에 있습니다.

+0

작품, 고마워요! –

0

Fix

기본적으로, 당신은 grcp 라이브러리의 대상을 지정해야합니다. 링크에서 복사 :

{ 
    "main": "index.js", 
    "scripts": { 
    "postinstall": "npm rebuild grpc --target=6.1.0 --target_arch=x64 --target_platform=linux --target_libc=glibc" 
    } 
}