gpt4 book ai didi

meteor - 在 Meteor 环境中运行其他节点进程?

转载 作者:行者123 更新时间:2023-12-01 11:48:05 25 4
gpt4 key购买 nike

我使用 Meteor(和 Meteorite)已经有一段时间了,我很喜欢它的轻松启动和运行。现在我想向应用程序添加一些测试,发现主要障碍是在测试脚本中包含对 Meteor 使用的包的引用/要求。

举个例子,我写了一个简单的类,它在内部使用了一些下划线方法。然后我写了一个简单的 mocha 脚本来测试它。

当我运行时

mocha my_test.js

它提示 _ 未定义。如果我添加

var _ = require('underscore')._

对于我的测试代码,它找不到下划线库,因为这些包都被包裹在一个紧密的小包中,在 mocha 的 NODE_PATH 上。我可以指定该路径,但那种硬编码路径似乎不是个好主意。

有没有办法在 Meteor 环境中运行节点进程/脚本(如 mocha)?我正在寻找与 ruby​​-land 中的“bundle exec”类似的东西。我研究了 Meteorite,它似乎几乎可以将命令直接传递给 Meteor,所以我希望你们可能想要部署这个。

更新:

写到这里,我开始看 meteor 源码。我能够写出一些主要我想要做的东西,并且认为 Meteor 团队可能会评论这是否看起来是一个好的路径。从 meteor shell 脚本 (/usr/local/meteor/bin/meteor) 开始,我在底部添加了一个 case 语句,它根据命令名称切换模式。这个文件可以替换当前的 meteor 启动脚本,然后你添加一个从 meteor-exec 到 meteor 的链接,瞧。有了这个替换脚本,我就可以正常运行 meteor 了。我也能跑

meteor-exec `which mocha` tests/mocha_test.coffee --compilers coffee:coffee-script

我得到了我期望的结果。我可以 require('underscore') 从 Meteor 的第三方库中提取。我可以在我的 npm 全局包空间中包含“mocha”和“chai”。

如果这看起来是正确的心态,并且代码与你们可能进行的方式一致,我可以提交一个适当的拉取请求。

替代的 meteor shell 脚本在这个要点中 https://gist.github.com/4416913 .我在下面添加了差异。

提前致谢

罗杰斯先生

附言。保持良好的工作。我真的很喜欢 Meteor。

diff meteor meteor.orig 
105,116c105,106
< NPM_GLOBAL_PATH=$(npm root -g)
< METEOR_THIRD_PARTY="$DEV_BUNDLE/app/lib/third"
< case $(basename $0) in
< meteor)
< export NODE_PATH="$DEV_BUNDLE/lib/node_modules"
< exec "$DEV_BUNDLE/bin/node" "$METEOR" "$@"
< ;;
< meteor-exec)
< export NODE_PATH="$DEV_BUNDLE/lib/node_modules:$METEOR_THIRD_PARTY:$DEV_BUNDLE/packages:$NPM_GLOBAL_PATH"
< exec "$DEV_BUNDLE/bin/node" "$@"
< ;;
< esac
---
> export NODE_PATH="$DEV_BUNDLE/lib/node_modules"
> exec "$DEV_BUNDLE/bin/node" "$METEOR" "$@"

最佳答案

你是对的,这使你可以访问下划线和节点模块,但正如你所说,你将无法通过这种方式访问​​ meteor 包(即你将无法使用 Meteor.Collection)。另外值得指出的是,我们 Git 存储库中的 admin/node.sh 与您的 meteor-exec 执行相同的操作。

如果您想尝试构建一个更完整的解决方案,请查看 app/server/server.js 以了解我们如何加载包。您需要执行类似这样的操作才能测试依赖于 Meteor 本身的代码。另一种方法是创建一个智能包装包装 mocha。目前没有简单的方法直接从 Meteor 包中依赖 NPM 模块(这正在开发中),但您可以将 mocha 源复制到您的包中。然后你可能会达到这样的程度,即在你的应用程序中运行 meteor 运行你的 mocha 测试(尽管同时仍在运行一个监听端口 3000 等的网络服务器)

关于meteor - 在 Meteor 环境中运行其他节点进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14096527/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com