不明白 Javascript 如何在此代码中工作(使用 Coffeescript,Node.js 中的 Commander)

Does not understand how Javascript work in this code (using Coffeescript, Commander in Node.js)

我在 Node.js 中使用 Commander 时遇到一些问题:parseInt 在我的代码中无法正常工作:

commander = require 'commander'

#parseInt = (str) => parseInt str   #I tried to include this line but not work.

commander
  .option '-n, --connection [n]', 'number of connection', parseInt, 5000
  .option '-m, --message [n]', 'number of messages', parseInt, 5000
  .parse process.argv

console.log commander.connection 
console.log commander.message 

当我使用选项 -n 10000 -m 10000 时,控制台产生:

NaN
NaN

我还注意到这段代码 class 有效:

commander = require 'commander'

class MyCommand
  parseOpt: =>
    commander
      .option '-n, --connection [n]', 'number of connection', @parseInt, 5000
      .option '-m, --message [n]', 'number of messages', @parseInt, 5000
      .parse process.argv
    (@connection, @message} = commander
  run: =>
    @parseOpt()
    console.log @connection 
    console.log @message        
  parseInt: (str) => parseInt str

new MyCommand().run()

为什么我的代码不工作而 'class' 代码工作?如何在不使用 class 的情况下使我的代码工作?谢谢~

parseInt 需要 2 个参数:要解析的字符串和基数(默认为 10)。

commander 调用提供的函数有 2 个参数:要解析的字符串,它是默认值。 所以最后你的 parseInt 尝试解析 base 5000 中的字符串 '10000',这是无效的 base.

试试这个:

commander = require 'commander'

commander
  .option '-n, --connection [n]', 'number of connection', Number, 5000
  .option '-m, --message [n]', 'number of messages', Number, 5000
  .parse process.argv

console.log commander.connection
console.log commander.message

此外,您的 parseInt = (str) => parseInt str 不起作用的原因是您正在定义仅调用自身的递归函数。