Node.js中的第二个选项应填写第一个选项

First option should be filled for second option in Node.js

我的全局包的 global.js 文件的代码:

let fileName = '',
    port = '';


newArgv = process.argv.slice(2);

if (newArgv[0] === '-db' && newArgv[1] !== '') {
    fileName = newArgv[1];
} if (newArgv[2] === '-port' && newArgv[3] !== '') {
    port = newArgv[3];
}

jsonSpot(fileName, port);

jsonSpot(fileName, port);在另一个文件中,代码如下:

myFunction = (entryFileName, entryPort) => {

    let fileName = entryFileName || 'db.json',
        port = entryPort || 4000;

...

我打开我的CMD并写下命令:

myPackage --db myDb.json --port 3000

而且有效。

下面的命令也有效(我写的默认端口 4000):

myPackage --db myDb.json

但另一个命令没有,并且我的其余代码始终考虑端口 4000(此处应考虑端口 3000):

myPackage --port 3000

我的代码有什么问题?

是不是我的命令代码有什么问题,或者它们与其他部分有关(绝对没有显示其他部分)?

谢谢

在这种情况下,您只有 1 个参数“端口”,但您的代码无法处理 newArgv[0] === '-port' 的情况。

考虑使用像“commander”这样的包来处理命令行参数。