2017-10-30 5 views
2

동적 노드 코드를 평가하는 NodeJs 함수를 정의 할 수 있습니까? 여기 AWS 람다 동적 코드

컨텍스트이다

사용자는 참/거짓 돌려 자바 스크립트 함수 정의를 생성한다.

NodeJs에서 실행되는 AWS Lambda 컨테이너에서 사용자 코드를 "평가"해야합니다.

가능합니까?

자바 스크립트 eval과 비슷한 것을 사용해야합니까?

편집 여기

내가

'use strict'; 

exports.handler = (event, context, callback) => { 
    var body = "function test() { return 10; };"; 
    console.log("body", body); 

    eval(body); 

    var result = test(); 

    callback(null, result); 
}; 

을 시도 것입니다 그리고 난 "테스트"그러므로 eval이 제대로 평가되지 않은, 정의되지 않은 말하는 오류가 발생합니다.

START RequestId: 6e9abd93-bd69-11e7-a43f-c75328d778e1 Version: $LATEST 
2017-10-30T11:56:58.569Z 6e9abd93-bd69-11e7-a43f-c75328d778e1 body function test() { return 10; }; 
2017-10-30T11:56:58.581Z 6e9abd93-bd69-11e7-a43f-c75328d778e1 ReferenceError: test is not defined 
    at exports.handler (/var/task/index.js:11:18) 
END RequestId: 6e9abd93-bd69-11e7-a43f-c75328d778e1 
REPORT RequestId: 6e9abd93-bd69-11e7-a43f-c75328d778e1 Duration: 32.78 ms Billed Duration: 100 ms  Memory Size: 128 MB Max Memory Used: 19 MB 
RequestId: 6e9abd93-bd69-11e7-a43f-c75328d778e1 Process exited before completing request 
+0

좋은 질문, 나는 사용자 정의 사용자 코드를 실행하는 데 필요한 시스템의 아키텍처를 고민하고 있으며 람다는 것을 알고하는 것이 좋다 옵션. –

+0

@MatthewJamesBriggs 나는이 유형의 arhitecture에 대해 아주 좋은 해결책으로 Lambda를 찾았습니다. – Catalin

답변

1

평가는 람다에서 잘 작동합니다. 'use strict'를 사용하면이 잘 작동하므로 10을 출력해도됩니다.

strict 모드에서는 전역 변수를 만들 수 없기 때문에 오류가 발생합니다.

두 번째 옵션은 명시 적으로 글로벌 컨텍스트에 기능을 추가하는 것입니다

'use strict'; 

exports.handler = (event, context, callback) => { 
    var body = "global.test = function() { return 10; };"; 
    console.log("body", body); 

    eval(body); 

    var result = test(); 

    callback(null, result); 
}; 
0

노드는 서버 측에서 javascript를 실행하는 데 필요한 런타임입니다. 노드 (람다) 내에 유효한 자바 스크립트 코드를 작성할 수 있습니다.

난 당신이 패키지 'NPM 평가 설치'설치하여보십시오 수 있습니다 실행되지 않는 코드 '평가'에서 볼 수있는 것처럼 - https://www.npmjs.com/package/eval

+0

eval은 Lambda에서 작동하지 않습니다. – Catalin

+1

@Catalin 그러면 실제 오류가 게시되거나 문제가 발생한 경우 문제가 게시 될 수 있습니다. –

+0

좋아요, 실행하려고 시도한 코드를 추가했습니다 – Catalin