我正在使用Node编写一个Web应用程序。如果我有一个JS文件db.js
,其中包含一个名为init
的函数,我该如何从命令行调用该函数?
我正在使用Node编写一个Web应用程序。如果我有一个JS文件db.js
,其中包含一个名为init
的函数,我该如何从命令行调用该函数?
我做了一个 IIFE,大概是这样的:
(() => init())();
这段代码将立即执行并调用init函数。
node init.js
,并且文件包含IIFE,它将起作用。我想我没有完全理解你的问题。抱歉。 - Natan Deitch(init)();
:) - Little doe也许这种方法不是你想要的,但谁知道它可能会有所帮助。
const arg = process.argv.splice(2);
function printToCli(text){
console.log(text)
}
switch(arg[0]){
case "--run":
printToCli("how are you")
break;
default: console.log("use --run flag");
}
并运行命令node . --run
probuss-MacBook-Air:fb_v8 probus$ node . --run
how are you
probuss-MacBook-Air:fb_v8 probus$
你可以添加更多的参数 arg[0],arg[1],arg[2] ... 等等
对于 node . --run -myarg1 -myarg2
env-cmd
库来导入你的 .env 文件中定义的环境变量。npx env-cmd node -e 'require("./db").init()'
如果你想运行文件中的特定函数,也可以使用run-func
:
npx env-cmd npx run-func db.js init someArg
npx env-cmd node -e 'require("./db").init(someArg)'
env-cmd
和run-func
。--experimental-modules
。灵感来自于https://github.com/DVLP/run-func/blob/master/index.js
我创建了https://github.com/JiangWeixian/esrua
如果文件名为index.ts
export const welcome = (msg: string) => {
console.log(`hello ${msg}`)
}
只需运行
esrua ./index.ts welcome -p world
将输出hello world
ts
文件中的函数非常有用。似乎ts-node在幕后工作。 - Timo继续其他答案,如果您想使其可重用,可以创建以下脚本:
// rn-fn.js
const [, , filePath, fn, ...args] = process.argv;
import(filePath).then((mod) => mod[fn](...args));
然后举个例子:
// hello.js
export function hello(str) {
console.log(`hello ${str}`)
}
运行中:
node ./rn-fn.js ./hello.js hello world
在命令行中应该返回
hello world
myFile.js:
function myMethod(someVariable) {
console.log(someVariable)
}
如果从命令行这样调用它,什么也不会发生:
node myFile.js
但是如果你改变了你的文件:
myFile.js:
myMethod("Hello World");
function myMethod(someVariable) {
console.log(someVariable)
}
现在可以从命令行运行:
node myFile.js