我在Node中编写一个Web应用程序。如果我有一些db.js
带有函数的JS文件,init
如何从命令行调用该函数?
我在Node中编写一个Web应用程序。如果我有一些db.js
带有函数的JS文件,init
如何从命令行调用该函数?
Answers:
对于您为什么要这样做,或者什么是更标准的做法,没有任何评论:这是您问题的解决方案...。请记住,命令行所需的引号类型可能会有所不同。
在您中db.js
,导出init
功能。有很多方法,但是例如:
module.exports.init = function () {
console.log('hi');
};
然后假设您db.js
与命令提示符位于同一目录中,然后这样调用它:
node -e 'require("./db").init()'
对于其他读者来说,OP的 init
功能可以被称为任何东西,这并不重要,它只是问题中使用的特定名称。
module.exports.init = function () { console.log('hi'); };
,node -e 'require("./db").init()'
但对我没有任何帮助。我不确定自己做错了什么,但是按照您的想法,我使用module.exports = myFunction,
,然后node -e 'require("./myFunction")()'
为我工作。
node -e 'require("./index").handler(require("./fixtures/sample_event_01.json"), {}, console.log)'
。中间{}
是上下文,可以随时调整。console.log也有点原始,但是是一个不错的开始。当然,您也可以编写一个专用的CLI.js,如其他注释中所述,依次使用require()的index.js / handler。
根据其他答案,将以下内容添加到 someFile.js
module.exports.someFunction = function () {
console.log('hi');
};
然后,您可以将以下内容添加到 package.json
"scripts": {
"myScript": "node -e 'require(\"./someFile\").someFunction()'"
}
您可以在终端上致电
npm run myScript
我发现这是记住命令并使用它们的简便得多的方法
在db.js中,添加require('make-runnable');
到最后。
现在您可以执行以下操作:
node db.js init
任何其他的args都会传递给该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 };
make-runnable
,但是我认为这要好得多。谢谢。
npm i -g run-func
简单方法:
假设您在项目结构的helpers目录中有db.js文件。
现在进入helpers目录并转到节点控制台
helpers $ node
2)需要db.js文件
> var db = require("./db")
3)调用您的函数(在您的情况下为init())
> db.init()
希望这可以帮助
我执行IIFE,类似这样:
(() => init())();
此代码将立即执行并调用init函数。
node init.js
并且文件包含IIFE,它将起作用。我认为我不完全理解您的问题。抱歉。
(init)();
:)
很简单,在javascript文件testfile.js中:
module.exports.test = function () {
console.log('hi');
};
this.test();
在提示符下运行:
node testfile.js
test
中每次都在运行,因此您必须更改文件才能调用另一个函数)
如果文件仅包含函数,例如:
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