从命令行(Node JS)运行脚本中的函数
我正在编写一个Web应用程序在节点。 如果我有一个JS文件db.js
与一个函数init
中,我怎么能从命令行调用该函数?
没有评论你为什么要这样做,或者可能是一个更标准的做法:这是你的问题的解决scheme….
在你的db.js
,导出init
函数。 有很多方法,但是例如:
module.exports.init = function () { console.log('hi'); };
然后像这样调用它,假设你的db.js
和你的命令提示符在同一个目录中:
node -e 'require("./db").init()'
对于其他读者来说,OP的init
函数可以被称为任何东西,这并不重要,它只是问题中使用的具体名称。
尝试make-runnable 。
在db.js中,添加require('make-runnable');
到最后。
现在你可以做:
node db.js init
任何进一步的参数都会传递给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();
简单的方法:
假设你在项目结构的helpers目录下有db.js文件。
现在进入助手目录并进入节点控制台
helpers $ node
2)需要db.js文件
> var db = require("./db")
3)调用你的函数(在你的情况下它的init())
> db.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中的“脚本”部分运行
"db-init": "run-func db.js init"
重要的 init
必须导出到你的db.js文件中
module.exports = { init };
或ES6出口
export { init };
用下面的代码创build一个db.js:
module.exports = { init: function() { return "aasbnasbda"; } }
并使用命令行
go to the file location. cd ../fileLocation
启动节点并使用下面的命令,如下所示:
$ node > var a = require('./db.js'); undefined > console.log(a.init()); aasbnasbda undefined >
或者,您可以使用以下命令在一行中执行:
node -e 'console.log(require("./db.js").init())'