我不是开发人员,但被要求将1.3.4.1版本的Meteor部署迁移到新的(CentOS 7)平台上。原始公司消失了,应用程序开发人员消失了,没有合作... :( 据我所知,只有发行版。
当我在新服务器上运行以下命令时:
meteor run --port 3000 --release 1.3.4.1
我看到很多事情(下载软件包,构建,链接等)运行良好,但是几分钟后,在启动应用程序时,我在build modules.js中遇到了语法错误:
[meteor@rfcwerkboek rfc-project]$ meteor run --port 3000 --release 1.3.4.1
[[[[[ ~/prod/rfc-project ]]]]]
=> Started proxy.
W20190116-00:49:49.745(1)? (STDERR)
W20190116-00:49:50.037(1)? (STDERR) /home/meteor/prod/rfc-project/.meteor/local/build/programs/server/packages/modules.js:26622
W20190116-00:49:50.038(1)? (STDERR) matches.forEach(nextMatch => {
W20190116-00:49:50.038(1)? (STDERR) ^
W20190116-00:49:50.039(1)? (STDERR) SyntaxError: Unexpected token >
W20190116-00:49:50.039(1)? (STDERR) at /home/meteor/prod/rfc-project/.meteor/local/build/programs/server/boot.js:292:30
W20190116-00:49:50.040(1)? (STDERR) at Array.forEach (native)
W20190116-00:49:50.041(1)? (STDERR) at Function._.each._.forEach (/home/meteor/.meteor/packages/meteor-tool/.1.3.4_1.wmvsc.7d2bga++os.linux.x86_64+web.browser+web.cordova/mt-os.linux.x86_64/dev_bundle/server-lib/node_modules/underscore/underscore.js:79:11)
W20190116-00:49:50.041(1)? (STDERR) at /home/meteor/prod/rfc-project/.meteor/local/build/programs/server/boot.js:133:5
=> Exited with code: 8
modules.js中发生语法错误的代码段是:
var fileFound = null;
matches.forEach(nextMatch => {
if( fileFound !== null ) return;
if( nextMatch[1].length < 1 ){
fileFound = new Buffer(0);
return;
}
删除构建并重新开始该过程并不能解决问题。
现在我刚刚在 .meteor / local / build / 中发现了一个名为 .node_version.txt 的文件,其中说:
v0.10.45
我的新CentOS 7发行版具有nodejs版本:
[meteor@rfcwerkboek rfc-project]$ node --version
v6.14.3
我想这可能是问题的原因。我对吗?如果我是对的,我应该通过删除标准的nodejs RPM降级nodejs并从头开始编译旧版本吗?
答案 0 :(得分:0)
Meteor带有内置的node
二进制文件,因此您不需要在开发系统上进行node
安装。
但是,如果您的CentOS是要在其上部署应用程序的目标服务器,则需要安装精确 node
版本才能执行捆绑的应用程序(但不安装Meteor)在服务器上是必需的。
背景
Meteor本身主要是一个开发框架,结合了良好的实践和工具,并将所有代码捆绑到一个节点应用程序中,该节点应用程序像其他所有节点应用程序一样运行。
要获取需要在服务器上安装的节点版本,可以转到项目目录并让Meteor打印它的节点版本:
$ cd myproject
$ meteor node -v
0.10.45
,例如Meteor 1.7版本的节点版本。因此,如果要在服务器上运行构建,则需要此节点版本。
请注意,如果命令的版本与.node_version.text
的版本不同,那么从meteor node -v
收到的版本就是运行meteor build
时使用的版本,应该安装在服务器上。
Meteor guide on custom deployment以一种易于理解的方式对此进行了总结,应作为进一步的阅读参考。解决此问题也应解决该错误。
长话短说
node
二进制文件的开发框架node
meteor npm <command>
node
版本与Meteor随附的版本相同。