节点js中的命令行参数

sno*_*der -1 javascript node.js

我对 node js 和 node js 中的 javascript 执行很陌生。我正在尝试使用参数在节点 js 中执行一个小脚本,我想在 myTest.js 中编写的函数中传递消息和用户名

myTest(message, user);

function myTest(message, user) {
    console.log(message + ": "+ user);
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

(function (exports, require, module, __filename, __dirname) { myTest(message, user);
                                                                 ^

ReferenceError: message is not defined
    at Object.<anonymous> (C:\Users\kp250041\Desktop\ProgramFiles\mytest.js:1:70)
    at Module._compile (internal/modules/cjs/loader.js:688:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:699:10)
    at Module.load (internal/modules/cjs/loader.js:598:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:537:12)
    at Function.Module._load (internal/modules/cjs/loader.js:529:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:741:12)
    at startup (internal/bootstrap/node.js:285:19)
    at bootstrapNodeJSCore (internal/bootstrap/node.js:739:3)
Run Code Online (Sandbox Code Playgroud)

请指教。

Ben*_*rth 5

因此,此错误告诉您的是您正在引用message尚未定义的变量。为了定义两者messageuser您将需要从命令行参数中获取这些值。

为了做到这一点,我们将通过 访问它们process.argv。假设您message首先传递和user第二次传递,那么结果代码将如下所示。

// The first argument is the node executable
// The second is the script file name
let message = process.argv[2],
    user = process.argv[3];

function myTest(message, user) {
    console.log(message + ": "+ user);
}

myTest(message, user);
Run Code Online (Sandbox Code Playgroud)

有关 Node.js 中命令行参数的更多信息,请参阅此帖子