【问题标题】:Custom start-up command for Azure Node.js Web app (ES2015/babel)?Azure Node.js Web 应用程序(ES2015/babel)的自定义启动命令?
【发布时间】:2016-04-20 09:16:57
【问题描述】:

我正在将一个 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”无效。请使用“节点”格式。

这表示 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-registerala [cmets 中的链接]。

我怀疑选项 3 最简单​​,但检查是否有人遇到类似问题并设法在 Azure 上直接在 npm start 中运行 babel-node

【问题讨论】:

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


【解决方案1】:

根据您的问题,请在 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-liu-msft。这完全有道理(d'oh!)但是:Start script "./node_modules/babel-cli/bin/babel-node.js index.js" from package.json is not found.。我假设在运行 npm install 之前检查 Azure 部署脚本以包含依赖项?
  • 您修改脚本后是否收到错误消息?我将在我的测试项目中更新我的packege.json 文件以供您参考。
  • 是的。这里有一个先有鸡还是先有蛋的局面。 Azure 部署找不到 node_modules 目录,因为它尚未运行 npm install 来安装依赖项。我读过一些人正在存储和部署node_modules,这太可怕了,但在我的情况下,尝试只为babel-cli 模块返回Failed to stat file 'D:/home/site/repository/node_modules/babel-cli/node_modules/bin-version-check/node_modules/bin-version/node_modules/find-versions/node_modules/........../node_modules/builtin-modules/builtin-modules.json': The data area passed to a system call is too small.
  • 路径似乎太长,超出系统限制。您可以尝试使用更高的 node.js 和 npm 版本。设置“引擎”,如我的 package.json 内容中所示。
  • 谢谢加里。提高节点版本不会(没有)帮助。我认为可以肯定地说 Azure 平台不适用于此应用程序及其依赖项。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2014-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 2022-07-14
    • 1970-01-01
    相关资源
    最近更新 更多