3 回答

TA貢獻(xiàn)1835條經(jīng)驗 獲得超7個贊
要實現(xiàn)此功能,您必須在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);

TA貢獻(xiàn)1812條經(jīng)驗 獲得超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
這會為第一個參數(shù)分配一個空字符串并通過您的測試。
它通過了您的測試,因為process.argv[2]它將是空字符串'',即falsey,并被默認(rèn)值替換"one"
更換空白的第一參數(shù)''與null,undefined或使用,,實際發(fā)送的字符串'null'或'undefined'作為第一個參數(shù),這將無法通過測試。

TA貢獻(xiàn)1780條經(jīng)驗 獲得超4個贊
看起來您的第一個參數(shù)是可選的。將可選參數(shù)移到列表末尾是一種很好的做法。因此,可能的解決方案之一是交換您的論點。
解決這個問題的另一種方法是使用像這樣的命名參數(shù):
node another.js --bar="second parameter" --foo="first parameter"
添加回答
舉報