将流星部署到官方流星服务器光纤
Posted
技术标签:
【中文标题】将流星部署到官方流星服务器光纤【英文标题】:Deploy meteor to official meteor servers fibers 【发布时间】:2013-10-04 21:43:34 【问题描述】:这里已经有一些与此问题相关的问题。
我想在官方的流星服务器上部署一个 meteorjs 应用程序。我的应用程序使用纤程,并且由于纤程是为我的系统 (Mac OSX) 编译的,它会在 ubuntu 服务器上由流星创建一个错误。
其他问题/答案与在官方流星服务器以外的其他地方部署应用程序有关,或者他们似乎留下了一步,因为它们不适合我。
其中一些相关帖子如下:
Reinstalling node-fibers for a Meteor app on Modulus.io?
Problems with Meteor deployment related to fibers module
我想使用:
meteor deploy myapp.meteor.com
编辑:
不幸的是,我上面的问题并不完整,我使用的是 Future,它是 Fiber 的一部分。当我将它部署到流星并访问服务器日志时,我收到这些警告,然后应用程序立即崩溃。
警告 /meteor/dev_bundles/0.3.13/lib/node_modules/fibers/future.js:173
警告错误:找不到模块“纤维/未来”
在我的代码中,我有一行:
Future = Npm.require("fibers/future");
这在meteor deploy XXX.meteor.com 上不可能吗?
编辑第二: 而不是使用:
Future = Npm.require("fibers/future");
我也试过了:
var path = Npm.require('path');
var fs = Npm.require('fs');
var base = path.resolve('.');
var isBundle = fs.existsSync(base + '/bundle');
var modulePath = base + (isBundle ? '/bundle/static' : '/public') + '/node_modules';
Future = Npm.require(modulePath + '/fibers/future');
正如这篇文章中所建议的:
How can I deploy node modules in a Meteor app on meteor.com?
并将光纤安装到:
.meteor/local/build/programs/server/public/node_modules/
但是有了这个,我在没有 sudo 的情况下运行流星时会得到这个 错误:EACCES,权限被拒绝'XXXX/.meteor/local/build' 在 Object.fs.renameSync (fs.js:439:18)
或者这个错误,当使用 sudo 运行它时: 错误:找不到模块 'XXXX/.meteor/local/build/programs/server/public/node_modules/fibers/future'
通常我在没有 sudo ofc 的情况下运行流星!
【问题讨论】:
【参考方案1】:我的问题是我确实包含了用于加载另一个框架的 npm 包,这破坏了新的 Npm 由流星。
【讨论】:
【参考方案2】:您只需按照文档中的说明卸载光纤并将其重新安装到您的服务器上:
cd bundle/programs/server/node_modules
rm -r fibers
npm install fibers@1.0.1
其中 bundle 目录是您通过 meteor bundle xxx.tar.gz
在您的 ubuntu 服务器上创建的捆绑应用程序的解压缩版本
【讨论】:
不适用于我的问题,因为当我直接部署到流星服务器时,我从来没有捆绑文件夹。谢谢你的时间! 哦,我明白了,我想我知道你想做什么。我认为纤维/未来在流星部署托管上“正常工作”而无需二进制文件。您是否考虑过wrapAsync
在最终确定时会与更多官方实施保持一致?见eventedmind.com/posts/meteor-meteor-wrapasync【参考方案3】:
从meteor documentation 可以看出,您可以使用“meteor deploy”部署到meteor.com,或者使用“meteor bundle”创建一个捆绑包到您自己的服务器。
只有在创建捆绑包时才需要安装“fibers”。如果您使用“meteor deploy”,则无需。
只有在你想像这样部署时才需要删除和重新安装光纤包的部分
在您的开发机器上创建捆绑包 将 bundle.tgz 文件复制到运行不同操作系统的服务器上 解压 bundle.tgz 文件并运行应用程序在创建捆绑包时,无论如何您都必须安装光纤。如果您在服务器上完成所有操作,步骤如下:
流星包--release 0.6.5.1 /my/output.tgz tar -xvzf /my/output.tgz mv bundle your-app-name cd your-app-name/programs/server npm 安装光纤 foreverstart your-app-name/main.js这些步骤假设您使用节点包forever
【讨论】:
感谢您的回答!不幸的是,使用流星部署时出现错误,我认为这与其他相关问题中的问题相同 在较早的帖子中,他们使用较旧的流星版本。在运行 npm install fiber 之前,您是否更改了 yourapp/programs/server 的路径? 我不确定您指的是哪个“较早的帖子”,但我在我的问题中添加了第二次编辑,内容涉及您可能涉及的内容。 我认为你的错误不在于未来与流星的使用。您提到的第一个语法“Future = Npm.require("fibers/future")”与对我有用的语法相同。查看本教程以了解 Meteor 中的未来:eventedmind.com/posts/nodejs-using-futures 感谢 Gorb 博士的帮助。事实证明,问题出在其他地方。我包含了npm包,它破坏了meteor自带的npm以上是关于将流星部署到官方流星服务器光纤的主要内容,如果未能解决你的问题,请参考以下文章