指挥官不使用默认值

我用这样的defaultArgs设置命令:

import * as validations from './validation' import program from 'commander' import path from 'path' export default function initializeCommander (defaults) { program .version('0.0.1') .usage('redbubble-demo') .option('-u', '--url [url]', validations.isValidUrl, defaults.url) .option('-o', '--output-dir [path]', validations.hasValidParentDirectory, path.resolve(defaults.path)) .option('-s', '--size [size]', validations.isValidSize, defaults.size) .parse(process.argv) return program } 

我有这里设置的默认值,并将它们传递给像这样的函数:

 const defaultValues = { url: 'someuRL', size: 'medium', outputDir: './www' } const program = initializeCommander(defaultValues) console.log(program) //no value in console 

当我尝试访问program的选项时,我没有得到任何值。

我调用我的应用程序没有任何参数使用:

 babel-node src/index.js 

更新:

我能够运行应用程序作为一个二进制现在使用npm link但我得到这个错误:

 TypeError: Path must be a string. Received undefined at assertPath (path.js:7:11) at Object.resolve (path.js:1146:7) at initializeCommander (/home/vamsi/Do/redbubble-demo/build/index.js:9889:222) at Object.<anonymous> (/home/vamsi/Do/redbubble-demo/build/index.js:87:34) at __webpack_require__ (/home/vamsi/Do/redbubble-demo/build/index.js:22:30) at /home/vamsi/Do/redbubble-demo/build/index.js:42:18 at Object.<anonymous> (/home/vamsi/Do/redbubble-demo/build/index.js:45:10) at Module._compile (module.js:541:32) at Object.Module._extensions..js (module.js:550:10) at Module.load (module.js:458:32) 

stack trace中的行号已closures,因为我正在使用webpack捆绑它。

我很好奇你为什么使用webpack捆绑Node cli。 传统上,像webpack或browserify这样的打包程序用于为客户端项目复制节点模块系统,而不是用于服务器端项目。 (今天我了解到这是一个JSPM / babel-node的替代品。)

Commander正在抛出一个exception,因为您的默认名为outputDir而不是path但是您正在传递path.resolve(defaults.path))在您的命令定义中。