我正在将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节点并不理想,但我希望能进行简单的迁移。
三个需要重新架构的选项是:
- 使用gump工作流预编译ES2015:https://github.com/christopheranderson/azure-node-es2015-example
- 使用bash工作流预编译ES2015:http://www.wintellect.com/devcenter/dbaskin/deploying-an-es6-jspm-nodejs-application-to-azure
- 使用
babel-register
ala[注释中的链接]
我怀疑选项3将是最简单的,但请检查是否有人遇到类似的问题,并设法在Azure上的npm start
中直接运行babel-node
。
根据您的问题,请在Azure Web Apps上将您的start
npm脚本修改为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/了解更多信息。
正如Gary所说,您需要使用下面的命令更新package.json
。
"scripts": {
"start": "node ./node_modules/babel-cli/bin/babel-node.js index.js"
}