gcloud App Engine与Docker和Babel的灵活的陌生性

我已经将服务器端节点应用程序部署到定制应用程序引擎运行时几个月,没有任何问题。 关于它的唯一一个有趣的事情是,当我build造容器的时候,运行的是对源头的诅咒。

在过去的这几个星期里,这个问题一直在间歇性地失败,在远程的构build日志中出现这个错误。

import * as deps from './AppFactory'; SyntaxError: Unexpected token import 

带领我相信babel transpilation没有发生; 虽然gcloud cli表示它是:

 > node_modules/babel-cli/bin/babel.js src/ -d dist/ src/AppFactory.js -> dist/AppFactory.js src/Ddl.js -> dist/Ddl.js src/Helpers.js -> dist/Helpers.js src/MemoryResolver.js -> dist/MemoryResolver.js src/Mysql.js -> dist/Mysql.js src/Schema.js -> dist/Schema.js src/index.js -> dist/index.js ---> 0282c805d5c9 

无奈之下,我找出了Dockerfile中的dist / index文件。 当我这样做时,我发现确实没有发生转译。

当我在本地创builddocker图像时,一切都完美无缺。

我的Dockerfile如下:

 # Set the base image to Ubuntu FROM gcr.io/google_appengine/nodejs:latest ENV NODE_ENV production # File Author / Maintainer # Provides cached layer for node_modules ADD package.json /tmp/package.json RUN cd /tmp && npm install RUN mkdir -p /src && cp -a /tmp/node_modules /src/ # Define working directory WORKDIR /src ADD . /src RUN npm run deploy RUN cat /src/dist/index.js CMD ["npm", "start"] 

以下是我的.babelrc文件:

 { "presets": [ "es2015", ] } 

和我的香草yaml文件:

 service: metrics-api-test runtime: custom env: flex env_variables: NODE_ENV: 'production' NODEPORT: '8080' beta_settings: cloud_sql_instances: pwc-sales-demos:us-east1:pawc-sales-demos-sql 

我一直在用babel-register,babel-node尝试各种各样的变化。 当我build立一个当地的docker图像时,它们都能很好地工作。 当我部署到应用程序引擎时,它们都会失败。

几个月前,我发布了这个问题,这个问题又开始困扰着我。 它开始是一个间歇性的问题,现在每次都会发生。 它发生在服务之间,甚至在不同的gcloud项目之间。

任何洞察到这个得到我的赞赏和150分。

所以最后回到这个; 这完全是我的错。

我以为我已经把所有的babel依赖关系移动到运行时依赖关系strophe中,如下所示:

 "dependencies": { "babel-cli": "^6.24.1", "babel-preset-es2015": "^6.24.1".... 

但我一定没有。 所有的作品与上面和这个Dockerfile完美的工作:

 FROM gcr.io/google_appengine/nodejs:latest ENV NODE_ENV production # File Author / Maintainer # Provides cached layer for node_modules ADD package.json /tmp/package.json RUN cd /tmp && npm install RUN mkdir -p /src && cp -a /tmp/node_modules /src/ # Define working directory WORKDIR /src ADD . /src RUN node_modules/babel-cli/bin/babel.js src/ -d dist/ RUN cat dist/index.js CMD ["npm", "start"] 

没有更多的手动build立文件!