[javascript] 명령 줄에서 스크립트로 함수 실행 (노드 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메소드에 전달됩니다 .


답변

CLI에서 직접 실행 (전역)

설치

npm i -g run-func

사용법, 즉 “init”기능을 실행해야합니다. 내 보내야합니다. 하단을 참조하십시오.

run-func db.js init

또는

package.json 스크립트에서 실행 (로컬)

설치

npm i -S run-func

설정

"scripts": {
   "init": "run-func db.js init"
}

용법

npm run init

매개 변수

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

run-func db.js init param1 param2

중대한

함수 (이 예제에서 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