当我运行我的 `node file.js 1 23 44` 脚本时,它不会打印任何内容

Posted

技术标签:

【中文标题】当我运行我的 `node file.js 1 23 44` 脚本时,它不会打印任何内容【英文标题】:when I run my `node file.js 1 23 44` script, it doesn't prinout anything 【发布时间】:2021-07-22 05:18:22 【问题描述】:

当我运行node file.js 1 23 45 时,它应该打印出One TwoThree FourFive,但由于某种原因它没有打印出来。我认为脚本运行良好,因为我运行它没有任何问题,但它只是没有打印出任何东西。我错过了什么还是我完全错了?

const numbersMap = new Map([
    [ "0", "Zero" ],
    [ "1", "One"],
    [ "2", "Two"],
    [ "3", "Three"],
    [ "4", "Four"],
    [ "5", "Five"],
    [ "6", "Six"],
    [ "7", "Seven"],
    [ "8", "Eight"],
    [ "9", "Nine"]
  ]); 
  
 

  function toDigits (integers) 
    const r = [];
  
    for (const n of integers) 
      const stringified = n.toString(10);
      let name = "";
  
      for (const digit of stringified)
        name += numbersMap.get(digit);
      r.push(name);
    
  
    console.log(r.join());
  

【问题讨论】:

toDigits 没有被调用? 我该怎么做?@evolutionxbox 您可以使用toDigits()调用该函数。如果您想传递参数,请查看***.com/questions/22213980/… @evolutionxbox 我之前尝试过,但我得到了integers is not iterable 你能分享一下这个例子吗?我们无法调试不可见的代码 【参考方案1】:

您定义了 Map 和方法 toDigits,但实际上并未调用该方法。您可以通过添加toDigits(...) 来做到这一点。 要解析命令行参数,您可以使用process.argv。这会给你类似的东西

[
  'node',
  '/path/to/script/index.js',
  '1',
  '23',
  '45'
]

您可以在代码中使用例如process.argv.slice(2)

const numbersMap = new Map([
  [ "0", "Zero" ],
  [ "1", "One"],
  [ "2", "Two"],
  [ "3", "Three"],
  [ "4", "Four"],
  [ "5", "Five"],
  [ "6", "Six"],
  [ "7", "Seven"],
  [ "8", "Eight"],
  [ "9", "Nine"]
]);

function toDigits (integers) 
  const r = [];

  for (const n of integers) 
    const stringified = n.toString(10);
    let name = "";

    for (const digit of stringified)
      name += numbersMap.get(digit);
    r.push(name);
  

  console.log(r.join());


// You can parse command line arguments like this:
const integers = process.argv.slice(2);

// and then pass them on
toDigits(integers);

【讨论】:

这不能回答问题? “当我运行我的 node file.js 1 23 44 脚​​本时,它不会打印出任何东西” 你是对的。用一个关于如何解析命令行参数的简短示例更新了答案。 感谢您更新答案。 我认为这可能是@SebastianRichner、@evolutionxbox 的解决方案。我之前使用过process.argv.slice(2),但据我所知,输入是字符串而不是整数,所以现在我的问题是,node file.js 1 23 44 中的参数仍然是整数吗? 如果他们会像您提到的那样运行您的代码,那么您可以放心地假设这符合问题中的要求,因为它确实按预期打印了单词。

以上是关于当我运行我的 `node file.js 1 23 44` 脚本时,它不会打印任何内容的主要内容,如果未能解决你的问题,请参考以下文章

Node JS 服务器如何永远运行

运行 Node 脚本时更改当前 shell 上下文中的工作目录

Node.js:如何附加到正在运行的进程并使用控制台调试服务器?

Node.js:如何附加到正在运行的进程并使用控制台调试服务器?

如何在运行 Node.js 的 Debian 上安装 sqlite3?

更新 Node.js 后,Node 项目停止工作