if语句在javascript中被跳过

时间:2017-01-16 17:51:17

标签: javascript node.js

我正在编写一个基本的应用程序来从参数中获取值并显示它们。我有两个文件:

  1. APP.js

    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');
    }
    
  2. 的node.js

    console.log("im up")
    
    var addnote = (name,title) => {
      console.log('Welcome', title, name);
    };
    
    module.export = {
      addnote
    }
    
  3. 这是我传递参数时得到的输出:

      

    Admins-Mac:节点admin $ node app.js - 3 Tony先生

         

    应用程序启动

         

    im up

         

    无效

    如果我的知识是正确的,输出必须是Welcome Mr Tony

    我无法弄清楚错误。

2 个答案:

答案 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];