5

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

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

我在 /server/server.js 中尝试过这样的事情

var arguments = process.argv.splice(2);
console.log('cmd args: ' + JSON.stringify(arguments,0,4));

我跑了一个测试。还有很多其他的只是随机的命令行参数。

meteor --dev

控制台中的输出只有这个。

cmd args: [
    "--keepalive"
]

将命令行参数输入 Meteor 应用程序的最佳方法是什么?

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

4

2 回答 2

7

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

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

我希望我能帮助你!:)

于 2012-05-07T08:03:45.413 回答
1

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

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

于 2014-12-11T15:01:29.993 回答