Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.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
如何将命令行参数传递给Meteor应用程序?_Meteor - Fatal编程技术网

如何将命令行参数传递给Meteor应用程序?

如何将命令行参数传递给Meteor应用程序?,meteor,Meteor,我想在启动时将命令行参数传递给我的Meteor应用程序 例如--dev、--test或--prod,指示它是否在dev、test或prod环境中运行。然后,它可以在启动时加载不同的资源,等等 我在a/server/server.js中尝试了类似的方法 var arguments = process.argv.splice(2); console.log('cmd args: ' + JSON.stringify(arguments,0,4)); 我做了一个测试。还有一些只是随机的命令行参数 m

我想在启动时将命令行参数传递给我的Meteor应用程序

例如--dev、--test或--prod,指示它是否在dev、test或prod环境中运行。然后,它可以在启动时加载不同的资源,等等

我在a/server/server.js中尝试了类似的方法

var arguments = process.argv.splice(2);
console.log('cmd args: ' + JSON.stringify(arguments,0,4));
我做了一个测试。还有一些只是随机的命令行参数

meteor --dev
控制台中的输出仅此而已

cmd args: [
    "--keepalive"
]
在Meteor应用程序中获取命令行参数的最佳方法是什么


或者,这是解决更高层次问题的正确方法吗?如果没有,那么解决区分运行环境的问题的正确方法是什么?

Meteor不会将命令行参数转发到您的应用程序,如果它不知道这些参数的话。您有多种可能性:

  • 重写meteor.js的部分内容以转发无法识别的参数。这应该不会太难,但这不是一个很好的解决方案。如果发生更新,您就有麻烦了:D
  • 您可以编写一个小配置文件,并根据其中的配置选项更改应用程序的行为。看一看
  • 最简单的方法是使用环境变量。您可以像这样读取节点中的环境变量。之后,您可以通过“express.js”方式启动应用程序:
    $METEOR\u ENV=production METEOR

  • 我希望我能帮助你!:)

    它不起作用的原因是,
    meteor
    命令启动一个代理(获取您提供的参数),然后用
    --keepalive
    启动meteor应用程序

    如果使用Meteor build--directory/my/build/path构建Meteor并运行它,
    process.argv
    将具有正确的值