我正在用Node写一个web应用程序。如果我有一些带有init函数的JS文件,我怎么从命令行调用这个函数呢?


当前回答

如果你把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();

其他回答

更新2020 - CLI

正如@mix3d指出的那样,你可以只运行一个命令,其中file.js是你的文件,someFunction是你的函数,后面有空格分隔的参数

npx run-func file.js someFunction "just some parameter"

就是这样。

在上面的例子中调用File.js

const someFunction = (param) => console.log('Welcome, your param is', param)

// exporting is crucial
module.exports = { someFunction }

更详细的描述

从CLI直接运行(全局)

安装

npm i -g run-func

使用方法,即运行函数“init”,它必须导出,见底部

run-func db.js init

or

从包运行。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 };

根据其他答案,将以下内容添加到someFile.js

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

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

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

然后,您可以从终端进行呼叫

npm run myScript

我发现这是一种更容易记住和使用命令的方法

如果你把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();

有时你想通过CLI运行一个函数,有时你想从另一个模块请求它。以下是如何做到这两点。

// file to run
const runMe = () => {}
if (require.main === module) {
  runMe()
} 
module.exports = runMe

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

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