我不是开发人员,但被要求将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并从头开始编译旧版本吗?
最佳答案
Meteor附带内置的node
二进制文件,因此您不需要在开发系统上安装node
。
但是,如果您的CentOS是要在其上部署应用程序的目标服务器,则需要安装确切的 node
版本才能执行 bundle 的应用程序(但不需要在服务器上安装Meteor)。
背景
meteor 本身主要是一个开发框架,结合了良好的实践和工具,并将所有代码 bundle 到一个节点应用程序中,该节点应用程序的运行方式与其他所有节点应用程序一样。
为了获得需要在服务器上安装的节点版本,您可以转到项目目录并让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
版本
关于node.js - 'SyntaxError : Unexpected token' after migration to different platform,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54214353/