1

这里已经有一些与此问题相关的问题。

我想将meteorjs 应用程序部署到官方的meteor 服务器。我的应用程序使用纤程,并且由于纤程是为我的系统(Mac OSX)编译的,它会在 ubuntu 服务器上由流星创建一个错误。

其他问题/答案与在官方流星服务器以外的其他地方部署应用程序有关,或者他们似乎离开了一步,因为它们对我不起作用。

一些相关的帖子是:

在 Modulus.io 上为 Meteor 应用程序重新安装节点光纤?

与光纤模块相关的 Meteor 部署问题

我想使用:

meteor deploy myapp.meteor.com

编辑:

不幸的是,我上面的问题并不完整,我使用 Future,它是纤维的一部分。当我将它部署到流星并访问服务器日志时,我收到这些警告,然后应用程序立即崩溃。

警告/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');

正如这篇文章中所建议的:

如何在meteor.com 上的Meteor 应用程序中部署节点模块?

并将光纤安装到:

.meteor/local/build/programs/server/public/node_modules/

但是有了这个我在运行没有 sudo 的流星时得到这个错误:EACCES,在 Object.fs.renameSync (fs.js:439:18) 的权限被拒绝'XXXX/.meteor/local/build'

或此错误,使用 sudo 运行时:错误:找不到模块'XXXX/.meteor/local/build/programs/server/public/node_modules/fibers/future'

通常我在没有 sudo ofc 的情况下运行流星!

4

3 回答 3

1

我的问题是我确实包含了用于加载另一个框架的 npm 包,它通过流星破坏了新的 Npm。

于 2013-09-30T13:11:14.283 回答
0

您只需卸载光纤并将其重新安装在您的服务器上,如文档中所述:

cd bundle/programs/server/node_modules
rm -r fibers
npm install fibers@1.0.1

meteor bundle xxx.tar.gzbundle 目录是您在 ubuntu 服务器上创建的捆绑应用程序的未解压版本

于 2013-09-28T22:12:58.940 回答
0

流星文档中可以清楚地看出,您可以使用“meteor deploy”部署到meteor.com,或者通过使用“meteor bundle”创建一个包来部署到您自己的服务器。

只有在您创建捆绑包时,您才需要安装“光纤”。如果您使用“meteor deploy”,则不需要。

仅当您想像这样部署时才需要删除和重新安装光纤包的部分

  • 在您的开发机器上创建捆绑包
  • 将 bundle.tgz 文件复制到运行不同操作系统的服务器
  • 解压 bundle.tgz 文件并运行应用程序

创建捆绑包时,无论如何您都必须安装光纤。如果您在服务器上完成所有操作,则步骤如下:

  • 流星包 --release 0.6.5.1 /my/output.tgz
  • tar -xvzf /my/output.tgz
  • mv 捆绑您的应用程序名称
  • cd 你的应用程序名称/程序/服务器
  • npm 安装纤维
  • 永远启动 your-app-name/main.js

这些步骤假设您永远使用节点包

于 2013-09-29T07:12:06.610 回答