简体   繁体   English

Netlify“找不到ng命令”

[英]Netlify “ng command not found”

I am trying to deploy my angular app on netlify. 我正在尝试在netlify上部署我的角度应用程序。 However, I am running into a problem where it says ng command not found. 但是,我遇到了一个问题,它说找不到ng命令。 I have angular cli and npm globally on my computer. 我的计算机上全局有角度cli和npm。 The current deploy settings are: 当前的部署设置为:

Build command: ng build --prod 编译命令:ng build --prod

Publish directory: dist/mysite 发布目录:dist / mysite

What could be the cause of this? 这可能是什么原因? Thanks a ton! 万分感谢!

Here are the logs related to the failed build 以下是与构建失败相关的日志

5:43:56 PM: Build ready to start
5:43:58 PM: build-image version: 84aca9ba39e0ee86ba194760fbfc51a808f62543
5:43:58 PM: buildbot version: 57d44fd1631cc3fff8b38fbaf88d3d04f946418a
5:43:58 PM: Fetching cached dependencies
5:43:58 PM: Starting to download cache of 254.7KB
5:43:58 PM: Finished downloading cache in 113.606368ms
5:43:58 PM: Starting to extract cache
5:43:58 PM: Failed to fetch cache, continuing with build
5:43:58 PM: Starting to prepare the repo for build
5:43:59 PM: No cached dependencies found. Cloning fresh repo
5:43:59 PM: git clone git@gitlab.com:jshede/my-website
5:44:05 PM: Preparing Git Reference refs/heads/master
5:44:08 PM: Starting build script
5:44:08 PM: Installing dependencies
5:44:09 PM: Downloading and installing node v8.15.0...
5:44:09 PM: Downloading https://nodejs.org/dist/v8.15.0/node-v8.15.0-linux-x64.tar.xz...
5:44:10 PM:   0.0%
5:44:10 PM: 
###################
5:44:10 PM:                                              26.9%
5:44:10 PM: 
#####################
5:44:10 PM: ################################################### 100.0%
5:44:10 PM: Computing checksum with sha256sum
5:44:10 PM: Checksums matched!
5:44:13 PM: Now using node v8.15.0 (npm v6.4.1)
5:44:13 PM: Attempting ruby version 2.3.6, read from environment
5:44:14 PM: Using ruby version 2.3.6
5:44:14 PM: Using PHP version 5.6
5:44:14 PM: Started restoring cached go cache
5:44:14 PM: Finished restoring cached go cache
5:44:14 PM: unset GOOS;
5:44:14 PM: unset GOARCH;
5:44:14 PM: export GOROOT='/opt/buildhome/.gimme/versions/go1.10.linux.amd64';
5:44:14 PM: export PATH="/opt/buildhome/.gimme/versions/go1.10.linux.amd64/bin:${PATH}";
5:44:14 PM: go version >&2;
5:44:14 PM: export GIMME_ENV='/opt/buildhome/.gimme/env/go1.10.linux.amd64.env';
5:44:14 PM: go version go1.10 linux/amd64
5:44:14 PM: Installing missing commands
5:44:14 PM: Verify run directory
5:44:14 PM: Executing user command: ng build --prod
5:44:14 PM: /usr/local/bin/build: line 32: ng: command not found
5:44:14 PM: Caching artifacts
5:44:14 PM: Started saving pip cache
5:44:14 PM: Finished saving pip cache
5:44:15 PM: Started saving emacs cask dependencies
5:44:15 PM: Finished saving emacs cask dependencies
5:44:15 PM: Started saving maven dependencies
5:44:15 PM: Finished saving maven dependencies
5:44:15 PM: Started saving boot dependencies
5:44:15 PM: Finished saving boot dependencies
5:44:15 PM: Started saving go dependencies
5:44:15 PM: Finished saving go dependencies
5:44:15 PM: Cached node version v8.15.0
5:44:15 PM: Error running command: Build script returned non-zero exit code: 127
5:44:15 PM: Failing build: Failed to build site
5:44:15 PM: failed during stage 'building site': Build script returned non-zero exit code: 127
5:44:15 PM: Finished processing build request in 17.582066584s

Here is my package.json in angular app 这是我在Angular应用程序中的package.json

   {
  "name": "mysite",
  "version": "0.0.0",
  "scripts": {
    "ng": "ng",
    "start": "ng serve",
    "build": "ng build",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e"
  },
  "private": true,
  "dependencies": {
    "@angular/animations": "^6.1.0",
    "@angular/common": "^6.1.0",
    "@angular/compiler": "^6.1.0",
    "@angular/core": "^6.1.0",
    "@angular/forms": "^6.1.0",
    "@angular/http": "^6.1.0",
    "@angular/platform-browser": "^6.1.0",
    "@angular/platform-browser-dynamic": "^6.1.0",
    "@angular/router": "^6.1.0",
    "core-js": "^2.5.4",
    "rxjs": "~6.2.0",
    "zone.js": "~0.8.26"
  },
  "devDependencies": {
    "@angular-devkit/build-angular": "~0.8.0",
    "@angular/cli": "~6.2.3",
    "@angular/compiler-cli": "^6.1.0",
    "@angular/language-service": "^6.1.0",
    "@types/jasmine": "~2.8.8",
    "@types/jasminewd2": "~2.0.3",
    "@types/node": "~8.9.4",
    "codelyzer": "~4.3.0",
    "eslint": "^5.11.1",
    "eslint-config-google": "^0.11.0",
    "eslint-plugin-typescript": "^0.14.0",
    "jasmine-core": "~2.99.1",
    "jasmine-spec-reporter": "~4.2.1",
    "karma": "~3.0.0",
    "karma-chrome-launcher": "~2.2.0",
    "karma-coverage-istanbul-reporter": "~2.0.1",
    "karma-jasmine": "~1.1.2",
    "karma-jasmine-html-reporter": "^0.2.2",
    "protractor": "~5.4.0",
    "ts-node": "~7.0.0",
    "tslint": "~5.11.0",
    "typescript": "~2.9.2",
    "typescript-eslint-parser": "^21.0.2"
  }
}

Here are some Angular simple setup settings I use on Netlify 这是我在Netlify使用的一些Angular简单设置设置

Ignore dependencies and deploy folder 忽略依赖项并部署文件夹

No need to keep these in your repo. 无需将这些保留在您的存储库中。 Netlify will spin up the correct tooling and add your dependencies. Netlify将启动正确的工具并添加依赖项。

.gitignore

/node_modules
/dist

Setup your build environment for Netlify (optional) 为Netlify设置构建环境(可选)

A netlify.toml overrides the settings on the app.netlify.com admin, so I don't have to edit them if I want a change. netlify.toml会覆盖app.netlify.com管理员上的设置,因此,如果我要更改,则不必编辑它们。 They can be set there without this file. 可以在没有此文件的情况下在此处设置它们。

netlify.toml (root of repository) netlify.toml (存储库的根)

[build]
  command = "npm run build:prod"
  publish = "dist"

Add the build:prod to the scripts section of package.json build:prod添加到package.json的脚本部分

  "scripts": {
    "ng": "ng",
    "start": "ng serve",
    "build": "ng build",
    "build:prod": "ng build --prod",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e"
  },

Setup correct deploy location in angular.json angular.json设置正确的部署位置

projects.mysite.architect.build.options.outputPath should be "dist" or something unique and match your netlify.toml publish value and the ignore path. projects.mysite.architect.build.options.outputPath应该是“ dist”或唯一的值,并与您的netlify.toml发布值和忽略路径匹配。 ( note: it is ok to use subpaths as long as they all match like dist/my-site) 注意:只要子路径都可以像dist / my-site一样匹配,就可以使用子路径)

Make sure to have a _redirects to handle the SPA 确保使用_redirects处理SPA

projects.mysite.architect.build.options.assets value should look similar to the following in the angular.json projects.mysite.architect.build.options.assets值应与angular.json的以下内容相似

        "assets": [
          "src/favicon.ico",
          "src/assets",
          "src/_redirects"
        ],

Create the redirects file with following at a minimum to proxy our routes to the root index page. 至少创建以下重定向文件,以将我们的路由代理到根索引页面。

src/_redirects

/* /index.html 200

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM