Azure Node.js Web应用程序的自定义启动命令(ES2015 / babel)?

时间:2016-04-18 21:49:51

标签: node.js azure npm ecmascript-6 babeljs

我正在将ES2015 node.js应用程序从Heroku迁移到Azure。

在Heroku上运行的当前启动命令是

"start": "./node_modules/babel-cli/bin/babel-node.js index.js"

然而,在Azure上我得到了

  

package.json中的启动命令“./node_modules/babel-cli/bin/babel-node.js index.js”无效。请使用格式“node< script relative path>”。

这表示Azure仅支持npm start的vanilla节点。

我知道在生产中运行babel-node并不理想,但我希望能够直接迁移。

需要进行一些重新架构的三个选项是:

  1. 使用gulp工作流程预编译ES2015:https://github.com/christopheranderson/azure-node-es2015-example
  2. 使用bash工作流预编译ES2015:http://www.wintellect.com/devcenter/dbaskin/deploying-an-es6-jspm-nodejs-application-to-azure
  3. 使用babel-register ala [评论中的链接]。
  4. 我怀疑选项3最简单,但检查是否有人遇到类似问题,并设法直接在Azure babel-node上运行npm start

2 个答案:

答案 0 :(得分:8)

根据您的问题,请将您的start npm脚本修改为Azure Web Apps上的node ./node_modules/babel-cli/bin/babel-node.js index.js

以下是测试package.json中的内容:

{
  "name": "website",
  "description": "A basic website",
  "version": "1.0.0",
  "engines": {
    "node": "5.9.1",
    "npm": "3.7.3"
  },
  "scripts": {
    "start": "node ./node_modules/babel-cli/bin/babel-node.js index.js"
  },
  "dependencies": {
    "babel-preset-es2015": "^6.6.0",
    "babel-cli": "^6.0.0"
  }
}

同时,如果您需要更高的Node.js版本,可以在package.json中指定,请参阅https://azure.microsoft.com/en-us/documentation/articles/nodejs-specify-node-version-azure-apps/了解更多信息。

答案 1 :(得分:4)

正如Gary所说,您需要使用以下命令更新package.json

"scripts": {
    "start": "node ./node_modules/babel-cli/bin/babel-node.js index.js"
  }