为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

动漫人物 2021-09-30 17:15:20
我有一个名为的文件test.js,它有 2 个带有一些困难值的输入参数,我想从另一个节点 js 文件调用这个文件,但我只想分配给第二个参数而不分配第一个参数。你知道怎么做吗?测试.jsconst first= process.argv[2] || "one";const second= process.argv[3] || "two";console.log(first);console.log(second);另一个.jsconst child = require('child_process');child.execFileSync('node', [        'test.js',        'second parameter'    ],    {stdio: ['ignore', 1, 2]});当前结果:$ node another.jssecond parametertwo预期结果:$ node another.jsonesecond parameter
查看完整描述

3 回答

?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

要实现此功能,您必须在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);


查看完整回答
反对 回复 2021-09-30
?
慕雪6442864

TA贡献1812条经验 获得超5个赞

这是如何做到的。


js


const child = require('child_process');

child.execFileSync(

    'node',

    ["test.js",'','2nd param'],

    { stdio: ['ignore',1,2] }

);

测试.js


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

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


console.log(first);

console.log(second);

node --version

v12.2.0


node a.js

one

2nd param

这会为第一个参数分配一个空字符串并通过您的测试。


它通过了您的测试,因为process.argv[2]它将是空字符串'',即falsey,并被默认值替换"one"


更换空白的第一参数''与null,undefined或使用,,实际发送的字符串'null'或'undefined'作为第一个参数,这将无法通过测试。


查看完整回答
反对 回复 2021-09-30
?
Helenr

TA贡献1780条经验 获得超4个赞

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

解决这个问题的另一种方法是使用像这样的命名参数:

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


查看完整回答
反对 回复 2021-09-30
  • 3 回答
  • 0 关注
  • 258 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信