Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何使用npm babel和commanderjs将选项传递给脚本_Node.js_Npm_Babeljs - Fatal编程技术网

Node.js 如何使用npm babel和commanderjs将选项传递给脚本

Node.js 如何使用npm babel和commanderjs将选项传递给脚本,node.js,npm,babeljs,Node.js,Npm,Babeljs,有人能解释一下为什么我在检索选项'-x'时遇到困难(见下文) 我必须逃避一些角色吗 除此之外: 工作原理:node b.js解析url1 url2 url3-x 但这不是:npm运行babel节点a.js解析url1 url2 url3-x 这是我的package.json文件 { "name": "commander_test", "version": "1.0.0", "description": "", "main": "index.js", "scripts":

有人能解释一下为什么我在检索选项'-x'时遇到困难(见下文)

我必须逃避一些角色吗

除此之外:

  • 工作原理:
    node b.js解析url1 url2 url3-x
  • 但这不是:
    npm运行babel节点a.js解析url1 url2 url3-x
这是我的package.json文件

{
  "name": "commander_test",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "babel-node": "babel-node --presets=env",
    "a": "npm run babel-node a.js parse url1 url2 url3 -x",
    "b": "node b.js parse url1 url2 url3 -x ",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "commander": "^2.18.0"
  },
  "devDependencies": {
    "babel-cli": "^6.26.0",
    "babel-core": "^6.26.3",
    "babel-preset-env": "^1.7.0",
    "babel-preset-es2015": "^6.24.1"
  }
}
npm运行a的结果:

npm运行b的结果

> commander_test@1.0.0 b D:\repositories\node\commander
> node b.js parse url1 url2 url3 -x

[ 'C:\\Program Files\\nodejs\\node.exe',
  'D:\\repositories\\node\\commander\\b.js',
  'parse',
  'url1',
  'url2',
  'url3',
  '-x' ]
parse : url1 => true
parse : url2 => true
parse : url3 => true
a.js和b.js这两个文件是相同的。 仅a.js使用es6模块和b.js Commonjs模块

    import  program  from "commander"  // a.js
    let program = require("commander") // b.js

//from here it's the exact same code
    console.log(process.argv)
    program
      .version('0.0.1')
      .command('parse <urls...> ')
      .option('-x, --opt',  'opt')
      .action( function (urls, cmd) {
        urls.forEach(url => {
            console.log(`parse : ${url} => ${cmd.opt}`)
          });

      })

program.parse(process.argv)
从“指挥官”//a.js导入程序
让program=require(“commander”)//b.js
//从这里开始,它是完全相同的代码
console.log(process.argv)
程序
.版本('0.0.1')
.command('parse')
.option('-x,--opt',opt')
.action(函数(URL、cmd){
forEach(url=>{
log(`parse:${url}=>${cmd.opt}`)
});
})
program.parse(process.argv)
我看到了anwser[

多亏了Gajus,这里有了解决方案:他写道:

为了避免那些在工作中偶然发现这条线索的人感到困惑 future,下面是一个如何使用--的示例:

巴别塔节点--a--./foo--b在本例中:

--是传递给节点的选项(例如--debug或--throw deprecation)。 --b是传递给脚本的选项,即在process.argv下可用

根据此解决方案,我将脚本更改为:

 "scripts": {
    "a": "babel-node -- a.js  parse url1 url2 url3  -x",
    "b": "node b.js parse url1 url2 url3 -x ",
    "test": "echo \"Error: no test specified\" && exit 1"
  }
成功了


谢谢

其他用户将您的问题标记为质量低下和需要改进。我重新编写了您的输入的文字/格式,以使其更易于阅读/理解。请查看我的更改,以确保它们反映您的意图。如果您有进一步的问题或反馈,请随时给我留言。
 "scripts": {
    "a": "babel-node -- a.js  parse url1 url2 url3  -x",
    "b": "node b.js parse url1 url2 url3 -x ",
    "test": "echo \"Error: no test specified\" && exit 1"
  }