猿问

如何在 NodeJS 上分配特定参数?

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


测试.js


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


动漫人物
浏览 259回答 3
3回答

qq_花开花谢_0

要实现此功能,您必须在test.js. 你可以这样做: -//initialize with default valueslet 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);

慕雪6442864

这是如何做到的。jsconst child = require('child_process');child.execFileSync(    'node',    ["test.js",'','2nd param'],    { stdio: ['ignore',1,2] });测试.jsconst first= process.argv[2] || "one";const second= process.argv[3] || "two";console.log(first);console.log(second);node --versionv12.2.0node a.jsone2nd param这会为第一个参数分配一个空字符串并通过您的测试。它通过了您的测试,因为process.argv[2]它将是空字符串'',即falsey,并被默认值替换"one"更换空白的第一参数''与null,undefined或使用,,实际发送的字符串'null'或'undefined'作为第一个参数,这将无法通过测试。

Helenr

看起来您的第一个参数是可选的。将可选参数移到列表末尾是一种很好的做法。因此,可能的解决方案之一是交换您的论点。解决这个问题的另一种方法是使用像这样的命名参数:node another.js --bar="second parameter" --foo="first parameter"
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答