我正在将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并不理想,但我希望能够直接迁移。
需要进行一些重新架构的三个选项是:
babel-register
ala [评论中的链接]。我怀疑选项3最简单,但检查是否有人遇到类似问题,并设法直接在Azure babel-node
上运行npm start
。
答案 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"
}