명령 줄에서 스크립트로 함수 실행 (노드 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
'Programing' 카테고리의 다른 글
QLabel : 텍스트 및 배경색 설정 (0) | 2020.06.07 |
---|---|
std :: queue를 효율적으로 지우려면 어떻게해야합니까? (0) | 2020.06.06 |
중단 점을 없애려면 어떻게해야합니까? (0) | 2020.06.05 |
라텍스로 URL을 작성하는 방법? (0) | 2020.06.05 |
1-10 Java 사이의 난수 생성 (0) | 2020.06.05 |