从命令行(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())'