在Azure无效启动命令

时间:2017-06-15 21:11:09

标签: node.js angular azure azure-web-sites angular-universal

我在these steps之后使用Angular 4.0.0和Universal(平台服务器)创建了一个简单的应用程序

基本上它意味着它是一个Angular 4应用程序,能够在NodeJs环境中的服务器端进行渲染。

现在我想使用Git和命令行将此应用程序部署到我的Azure应用服务,因此我遵循了these steps。基本上是:

  1. installed Azure-Cli 2.0 for Windows
  2. 打开命令行(cmd)
  3. 运行az login,会要求打开网址并输入代码,以便我们对其进行身份验证
  4. 使用az webapp deployment user set --user-name <myUser> --password <myPassword>
  5. 配置部署用户
  6. 使用az group create --name myResourceGroup --location westeurope
  7. 创建资源组
  8. 使用az appservice plan create --name myServicePlan --resource-group myResourceGroup --sku B1
  9. 创建基本服务计划
  10. 使用az webapp create --name myApp --resource-group myResourceGroup --plan myServicePlan
  11. 创建Web应用程序
  12. 使用az webapp deployment source config-local-git --name myUSer --resource-group myResourceGroup --query url --output tsv通过GIT配置部署,并返回https://myUser@myApp.scm.azurewebsites.net/myApp.git
  13. 使用git remote add azure https://myUser@myApp.scm.azurewebsites.net/myApp.git
  14. 将Azure远程添加到本地git存储库
  15. 推送到Azure远程以使用git push azure master部署应用,它将提示输入在步骤4中设置的用户名和密码。
  16. 我收到一些错误,说某些依赖项在npm中不可用。我注意到正在使用的Azure nodeJ是旧的,因此要强制我的Azure应用服务使用我在本地使用的相同节点版本(node --versionv8.0.0我添加了engines部分我的package.json是这样的:

    "engines": {
        "node": "8.0.0"
      }
    

    所以现在我的package.json如下:

    {
      "name": "myApp",
      "version": "0.0.0",
      "license": "MIT",
      "scripts": {
        "prestart": "ng build --prod && ngc",
        "start": "ts-node src/server.ts"
      },
      "private": true,
      "dependencies": {
        "@angular/animations": "^4.1.3",
        "@angular/common": "^4.0.0",
        "@angular/compiler": "^4.0.0",
        "@angular/core": "^4.0.0",
        "@angular/forms": "^4.0.0",
        "@angular/http": "^4.0.0",
        "@angular/platform-browser": "^4.0.0",
        "@angular/platform-browser-dynamic": "^4.0.0",
        "@angular/platform-server": "^4.1.3",
        "@angular/router": "^4.0.0",
        "core-js": "^2.4.1",
        "rxjs": "^5.1.0",
        "zone.js": "^0.8.4"
      },
      "devDependencies": {
        "@angular/cli": "1.0.0",
        "@angular/compiler-cli": "^4.0.0",
        "@types/jasmine": "2.5.38",
        "@types/node": "~6.0.60",
        "codelyzer": "~2.0.0",
        "jasmine-core": "~2.5.2",
        "jasmine-spec-reporter": "~3.2.0",
        "karma": "~1.4.1",
        "karma-chrome-launcher": "~2.0.0",
        "karma-cli": "~1.0.1",
        "karma-jasmine": "~1.1.0",
        "karma-jasmine-html-reporter": "^0.2.2",
        "karma-coverage-istanbul-reporter": "^0.2.0",
        "protractor": "~5.1.0",
        "ts-node": "~2.0.0",
        "tslint": "~4.5.0",
        "typescript": "~2.2.0"
      },
      "engines": {
        "node": "8.0.0"
      }
    }
    

    我遇到的问题是,当我运行git push azure master以在Azure中部署时,我得到invalid start-up command ts-node src/server.ts in package.json,以便该应用程序位于Azure中但无法部署且无法运行即可。这是我的输出:

    $ git push azure master
    Counting objects: 3, done.
    Delta compression using up to 4 threads.
    Compressing objects: 100% (3/3), done.
    Writing objects: 100% (3/3), 344 bytes | 0 bytes/s, done.
    Total 3 (delta 2), reused 0 (delta 0)
    remote: Updating branch 'master'.
    remote: Updating submodules.
    remote: Preparing deployment for commit id 'd7229584fc'.
    remote: Generating deployment script.
    remote: Running deployment command...
    remote: Handling node.js deployment.
    remote: KuduSync.NET from: 'D:\home\site\repository' to: 'D:\home\site\wwwroot'
    remote: Copying file: 'package.json'
    remote: Looking for app.js/server.js under site root.
    remote: Node.js versions available on the platform are: 0.6.20, 0.8.2, 0.8.19, 0.8.26, 0.8.27, 0.8.28, 0.10.5, 0.10.18, 0.10.21, 0.10.24, 0.10.26, 0.10.28, 0.10.29, 0.10.31, 0.10.32, 0.10.40, 0.12.0, 0.12.2, 0.12.3, 0.12.6, 4.0.0, 4.1.0, 4.1.2, 4.2.1, 4.2.2, 4.2.3, 4.2.4, 4.3.0, 4.3.2, 4.4.0, 4.4.1, 4.4.6, 4.4.7, 4.5.0, 4.6.0, 4.6.1, 5.0.0, 5.1.1, 5.3.0, 5.4.0, 5.5.0, 5.6.0, 5.7.0, 5.7.1, 5.8.0, 5.9.1, 6.0.0, 6.1.0, 6.2.2, 6.3.0, 6.5.0, 6.6.0, 6.7.0, 6.9.0, 6.9.1, 6.9.2, 6.9.4, 6.9.5, 6.10.0, 7.0.0, 7.1.0, 7.2.0, 7.3.0, 7.4.0, 7.5.0, 7.6.0, 7.7.4, 7.10.0, 8.0.0.
    remote: Selected node.js version 8.0.0. Use package.json file to choose a different version.
    remote: Selected npm version 5.0.0
    remote: Updating iisnode.yml at D:\home\site\wwwroot\iisnode.yml
    remote: Invalid start-up command "ts-node src/server.ts" in package.json. Please use the format "node <script relative path>".
    remote: Missing server.js/app.js files, web.config is not generated
    remote: ......
    remote: npm WARN lifecycle The node binary used for scripts is D:\Program Files (x86)\nodejs\0.10.28\node.exe but npm is using D:\Program Files (x86)\nodejs\8.0.0\node.exe itself. Use the `--scripts-prepend-node-path` option to include the path for the node binary npm was executed with.
    remote: ........................................................
    remote: added 17 packages in 73.406s
    remote: Finished successfully.
    remote: Running post deployment command(s)...
    remote: Deployment successful.
    To https://myApp.scm.azurewebsites.net/myApp.git
       d497e43..d722958  master -> master
    

    这是我第一次尝试在nodeJs中部署一些东西,而且还有很多我还不知道的关于为Angular应用程序发布生产的东西。当我运行npm start时,我错过了什么让它工作,因为它在本地工作?

1 个答案:

答案 0 :(得分:0)

您似乎因错误的启动命令而收到错误

remote: Invalid start-up command "ts-node src/server.ts" in package.json. Please use the format "node <script relative path>".

The documentation samplenode而不是ts-node