Programing

명령 줄에서 스크립트로 함수 실행 (노드 JS)

lottogame 2020. 6. 5. 08:03
반응형

명령 줄에서 스크립트로 함수 실행 (노드 JS)


Node에서 웹 앱을 작성 중입니다. db.js함수 가있는 JS 파일이 있으면 init명령 줄에서 해당 함수를 어떻게 호출 할 수 있습니까?


왜 이런 일을하고 싶거나 더 표준적인 방법이 될 수 있는지에 대한 의견이 없습니다. 다음은 귀하의 질문에 대한 해결책입니다 ... 명령 행에 필요한 따옴표 유형은 다를 수 있습니다.

당신의에서 db.js, 내보내기 init기능. 여러 가지 방법이 있지만 예를 들면 다음과 같습니다.

module.exports.init = function () {
  console.log('hi');
};

그런 다음 db.js명령 프롬프트와 동일한 디렉토리에 있다고 가정하면 다음과 같이 호출하십시오 .

node -e 'require("./db").init()'

다른 독자들에게 OP의 init기능은 무엇이든 호출 될 수 있습니다. 중요하지는 않으며 질문에 사용 된 특정 이름 일뿐입니다.


다른 답변에 따라 다음을 추가하십시오. someFile.js

module.exports.someFunction = function () {
  console.log('hi');
};

그런 다음에 다음을 추가 할 수 있습니다 package.json

"scripts": {
   "myScript": "node -e 'require(\"./someFile\").someFunction()'"
}

터미널에서 전화를 걸 수 있습니다

npm run myScript

나는 이것이 명령을 기억하고 사용하는 훨씬 쉬운 방법을 찾았습니다.


make-runnable을 시도하십시오 .

db.js require('make-runnable');에서 끝에 추가 하십시오.

이제 할 수있는 일 :

node db.js init

추가 인수는 init메소드에 전달됩니다 .


프로젝트에 run-func 설치

npm i -D run-func

내 보낸 기능 실행

run-func db.js init

다음 인수는 함수 매개 변수로 전달됩니다. init(param1, param2)

run-func db.js init param1 param2

package.json의 "scripts"섹션에서 실행할 수도 있습니다.

"db-init": "run-func db.js init"

중요한 기능 (이 예제에서 init)은 함수를 포함하는 파일로 내 보내야합니다.

module.exports = { init };

또는 ES6 내보내기

export { init };

간단한 방법 :

프로젝트 구조의 helpers 디렉토리에 db.js 파일이 있다고 가정 해 봅시다.

이제 helpers 디렉토리로 이동하여 노드 콘솔로 이동하십시오.

 helpers $ node

2) db.js 파일이 필요합니다

> var db = require("./db")

3) 함수를 호출하십시오 (귀하의 경우 init ())

> db.init()

도움이 되었기를 바랍니다


당신이 설정 한 경우 db.js모듈에 당신은에서 필요할 수 있습니다 db_init.js단지 : node db_init.js.

db.js :

module.exports = {
  method1: function () { ... },
  method2: function () { ... }
}

db_init.js :

var db = require('./db');

db.method1();
db.method2();

이건 더럽지 만 작동합니다 :)

main()스크립트에서 함수를 호출 합니다. 이전에는 스크립트 끝에서 main을 호출했습니다. 그러나 다른 함수를 추가하고 스크립트에서 다른 코드 부분의 함수를 사용하기 위해 내보냈습니다.하지만 다른 스크립트에서 다른 함수를 가져올 때마다 main () 함수를 실행하고 싶지 않습니다.

그래서 나는 이것을했다. 내 스크립트에서 main ()에 대한 호출을 제거하고 대신 스크립트 끝 에서이 검사를했다.

if (process.argv.includes('main')) {
   main();
}

따라서 CLI에서 해당 함수를 호출하려는 경우 : node src/myScript.js main


나는 IIFE를 수행합니다.

(() => init())();

이 코드는 즉시 실행되며 init 함수를 호출합니다.


파일에 함수 만 포함 된 경우

myFile.js :

function myMethod(someVariable) {
    console.log(someVariable)
}

Calling it from the command line like this nothing will happen:

node myFile.js

But if you change your file:

myFile.js:

myMethod("Hello World");

function myMethod(someVariable) {
    console.log(someVariable)
}

Now this will work from the command line:

node myFile.js

Simple, in the javascript file testfile.js:

module.exports.test = function () {
   console.log('hi');
};
this.test();

Running at the prompt:

node testfile.js

참고URL : https://stackoverflow.com/questions/30782693/run-function-in-script-from-command-line-node-js

반응형