关于javascript:从命令行(node js)运行脚本中的函数

Run function in script from command line (Node JS)

我正在节点中编写一个Web应用程序。如果我有一些JS文件db.js,其中包含函数init,那么如何从命令行调用该函数?


对于您为什么要这样做,或者什么可能是一个更标准的实践没有评论:这里是您的问题的解决方案……请注意,您的命令行所需的引号类型可能有所不同。

在您的db.js中,导出init函数。有很多种方法,但例如:

1
2
3
module.exports.init = function () {
  console.log('hi');
};

然后这样调用它,假设您的db.js与命令提示符位于同一目录中:

1
node -e 'require("./db").init()'

对于其他读者来说,op的init函数可以被称为任何东西,这并不重要,它只是问题中使用的特定名称。


根据其他答案,在someFile.js中增加以下内容

1
2
3
module.exports.someFunction = function () {
  console.log('hi');
};

然后您可以将以下内容添加到package.json

1
2
3
"scripts": {
  "myScript":"node -e 'require("./someFile").someFunction()'"
}

从终点站,你可以打电话

1
npm run myScript

我发现这是一个更容易记住命令并使用它们的方法


尝试使可运行。

在db.js中,在末尾添加require('make-runnable');

现在你可以做到:

1
node db.js init

任何进一步的参数都将传递给init方法。


将run func安装到项目

1
npm i -D run-func

运行任何导出的函数

1
run-func db.js init

以下任何参数都将作为函数参数init(param1, param2)传递。

1
run-func db.js init param1 param2

这也可以从package.json中的"scripts"部分运行。

1
"db-init":"run-func db.js init"

重要的是,必须在包含函数的文件中导出函数(在本例中为init)

1
module.exports = { init };

或ES6出口

1
export { init };


简单方法:

假设您在项目结构的helpers目录中有db.js文件。

现在进入helpers目录并转到node console

1
 helpers $ node

2)需要db.js文件

1
> var db = require("./db")

3)调用函数(在您的例子中是init())

1
> db.init()

希望这有帮助


如果你把db.js变成一个模块,你可以从db_init.js要求它,只需要:node db_init.js

J.J.

1
2
3
4
module.exports = {
  method1: function () { ... },
  method2: function () { ... }
}

JS:

1
2
3
4
var db = require('./db');

db.method1();
db.method2();


这是脏的,但可以用。

我将从脚本调用main()函数。以前,我只是在脚本的末尾调用main。但是,我添加了一些其他函数并从脚本中导出它们(在代码的其他部分使用函数),但我不希望每次在其他脚本中导入其他函数时都执行main()函数。

所以我做到了,在我的脚本中,我删除了对main()的调用,而在脚本末尾,我进行了以下检查:

1
2
3
if (process.argv.includes('main')) {
   main();
}

所以当我想在cli:node src/myScript.js main中调用这个函数时


我过着这样的生活:

1
(() => init())();

此代码将立即执行并调用init函数。


简单,在javascript文件testfile.js中:

1
2
3
4
module.exports.test = function () {
   console.log('hi');
};
this.test();

在提示下运行:

1
node testfile.js


如果您的文件只包含您的函数,例如:

MyFiel.JS:

1
2
3
function myMethod(someVariable) {
    console.log(someVariable)
}

像这样从命令行调用它不会发生任何事情:

1
node myFile.js

但如果您更改了文件:

MyFiel.JS:

1
2
3
4
5
myMethod("Hello World");

function myMethod(someVariable) {
    console.log(someVariable)
}

现在,这将在命令行中工作:

1
node myFile.js