Javascript 如何在NodeJ上分配特定参数?

Javascript 如何在NodeJ上分配特定参数?,javascript,arrays,node.js,optional-parameters,Javascript,Arrays,Node.js,Optional Parameters,我有一个名为test.js的文件,它有两个输入参数,有一些困难的值,我想从另一个节点js文件调用这个文件,但我只想分配给第二个参数,而不分配第一个参数。你知道怎么做吗 test.js const first= process.argv[2] || "one"; const second= process.argv[3] || "two"; console.log(first); console.log(second); const first= process.argv[2] || "one

我有一个名为
test.js
的文件,它有两个输入参数,有一些困难的值,我想从另一个节点js文件调用这个文件,但我只想分配给第二个参数,而不分配第一个参数。你知道怎么做吗

test.js

const first= process.argv[2] || "one";
const second= process.argv[3] || "two";

console.log(first);
console.log(second);
const first= process.argv[2] || "one";
const second= process.argv[3] || "two";

console.log(first);
console.log(second);
另一个.js

const child = require('child_process');
child.execFileSync('node', [
        'test.js',
        'second parameter'

    ],
    {stdio: ['ignore', 1, 2]}
);
当前结果:

$ node another.js
second parameter
two
预期结果:

$ node another.js
one
second parameter

要实现此功能,您必须在
test.js
中执行此操作。 您可以这样做:-

//initialize with default values
let first = 'one', second = 'two';    
if (process.argv[3]) { // if has 2nd argument
    first = process.argv[2];
    second = process.argv[3];
}
else { // else we assign second to 1st argument
    second = process.argv[2];
}
console.log(first);
console.log(second);

看起来您的第一个参数是可选的。将可选参数移到列表的末尾是一种很好的做法。所以,一个可能的解决方案是交换你的论点

解决此问题的另一种方法是使用如下命名参数:

node another.js --bar="second parameter" --foo="first parameter"

下面是如何做到这一点

a、 js

test.js

const first= process.argv[2] || "one";
const second= process.argv[3] || "two";

console.log(first);
console.log(second);
const first= process.argv[2] || "one";
const second= process.argv[3] || "two";

console.log(first);
console.log(second);
这将为第一个参数指定一个空字符串,并通过测试

它通过了您的测试,因为
进程.argv[2]
将是空字符串
'
,它是
错误的
,并被默认的
一“
替换


< >将空白第一个参数<代码> <代码>用<代码> null <代码>,<代码>未定义< /代码>,或使用<代码>,实际上发送字符串<代码> NULL < /代码>或<代码>未定义的作为第一个参数,你必须在
test.js
中实现你想要的功能,你能为你的
test.js
另一个.js
添加正确的文件内容吗?无法运行您的程序