我正在编写一个基本的应用程序来从参数中获取值并显示它们。我有两个文件:
console.log('application launching');
const fs = require('fs');
const yarg = require('yargs');
const node = require('./node.js')
var command = yarg.argv;
if (command === '3' ) {
console.log("adding note");
node.addnote(argv.name,argv.title);
}
else {
console.log('invalid');
}
console.log("im up")
var addnote = (name,title) => {
console.log('Welcome', title, name);
};
module.export = {
addnote
}
这是我传递参数时得到的输出:
Admins-Mac:节点admin $ node app.js - 3 Tony先生
应用程序启动
im up
无效
如果我的知识是正确的,输出必须是Welcome Mr Tony
。
我无法弄清楚错误。
答案 0 :(得分:1)
yargs给你一个参数对象。所以你需要检查
if (command[3]) {
// ...
}
然而,我们这里有错误
node.addnote(argv.name,argv.title);
因为你没有传递任何东西,既没有定义argv.name也没有定义argv.title。
所以给出了这个命令:
node app.js --3 --name=Tony --title=Mr
您需要此代码:
let command = yarg.argv;
if (command[3]) {
console.log("adding note");
addnote(command.name,command.title);
}
第三,您不需要nodejs。这是你的环境。相反,您需要要求您的文件持有第二个代码块。
const addnote = require("./2nd.js");
假设您的文件名为2nd.js并且位于同一文件夹中。
要整理(代码中还有许多其他错误),这里是对代码的重写:
1st.js:
const fs = require('fs');
const yarg = require('yargs');
const addnote = require("./2nd.js");
let command = yarg.argv;
if (command[3]) {
console.log("adding note");
addnote(command.name, command.title);
}
else {
console.log('invalid');
}
2nd.js:
let addnote = (name,title)=>{
console.log(`Welcome, ${title} ${name}`);
};
module.exports = addnote;
使用
运行
node 1st.js --3 --name=Tony --title=Mr
答案 1 :(得分:0)
您是否尝试过
console.log(command);
在if语句之前?
yarg.argv实际上返回一个长度为yarg.argc的数组,您可以索引该数组以获取如下值:
yarg.argv[3];