【问题标题】:Why am I getting an ng not found error when deploying my Angular project to Heroku?为什么将 Angular 项目部署到 Heroku 时出现 ng not found 错误?
【发布时间】:2020-05-23 23:53:53
【问题描述】:

我的项目布局如下:

package.json (A)
index.js
client
> package.json (B)

我的外部 package.json (A) 看起来像这样:

{
  "name": "---",
  "version": "1.0.0",
  "description": "---",
  "main": "index.js",
  "scripts": {
    "start": "node index.js",
    "build": "cd client && ng build --prod && cd .. && node index.js"
  },
  "repository": {
    "type": "git",
    "url": "---"
  },
  "author": "---",
  "license": "ISC",
  "bugs": {
    "url": "---"
  },
  "homepage": "---",
  "dependencies": {
    "axios": "^0.19.2",
    "cors": "^2.8.5",
    "dotenv": "^8.2.0",
    "express": "^4.17.1",
    "mongoose": "^5.9.14"
  }
}

而包含 Angular 项目的客户端文件夹中的 package.json (B) 如下所示:

{
  "name": "client",
  "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/cli": "~9.0.6",
    "@angular/compiler-cli": "~9.0.6",
    "@angular/animations": "~9.0.6",
    "@angular/common": "~9.0.6",
    "@angular/compiler": "~9.0.6",
    "@angular/core": "~9.0.6",
    "@angular/fire": "^6.0.0",
    "@angular/forms": "~9.0.6",
    "@angular/platform-browser": "~9.0.6",
    "@angular/platform-browser-dynamic": "~9.0.6",
    "@angular/router": "~9.0.6",
    "firebase": "^7.14.4",
    "rxjs": "~6.5.4",
    "tslib": "^1.10.0",
    "zone.js": "~0.10.2"
  },
  "devDependencies": {
    "@angular-devkit/build-angular": "~0.900.6",
    "@angular/cli": "~9.0.6",
    "@angular/compiler-cli": "~9.0.6",
    "@angular/language-service": "~9.0.6",
    "@types/node": "^12.11.1",
    "@types/jasmine": "~3.5.0",
    "@types/jasminewd2": "~2.0.3",
    "codelyzer": "^5.1.2",
    "jasmine-core": "~3.5.0",
    "jasmine-spec-reporter": "~4.2.1",
    "karma": "~4.3.0",
    "karma-chrome-launcher": "~3.1.0",
    "karma-coverage-istanbul-reporter": "~2.1.0",
    "karma-jasmine": "~2.0.1",
    "karma-jasmine-html-reporter": "^1.4.2",
    "protractor": "~5.4.3",
    "ts-node": "~8.3.0",
    "tslint": "~5.18.0",
    "typescript": "~3.7.5"
  }
}

查看其他问过类似问题的线程,他们中的大多数人都说我需要将 @angular/cli 和 @angular/compiler-cli 从 devDependencies 移动到依赖项,这就是我所做的。

然而,当 Heroku 运行脚本时

"build": "cd client && ng build --prod && cd .. && node index.js"

我不确定为什么我不断收到未找到 ng 的错误。我尝试的另一件事是将预安装脚本添加到 package.json (A)

"preinstall": "npm install -g angular-cli"

它删除了 ng not found 错误,但是我得到一个错误,说构建命令只能在 angular-cli 项目中工作,这让我认为更改目录可能不起作用?这真的让我很困惑,因为 npm run build 对我来说很好......

【问题讨论】:

  • @Zyadico,你安装了哪个 npm 版本的 angular/cli 包?
  • 尝试目录列表命令,看看您是否在正确的地方运行该命令。
  • 我假设您的客户端文件夹包含 angular.json 和其他 Angular 项目文件?

标签: node.js angular heroku npm


【解决方案1】:

我搞砸了一点,终于让它工作了。我的解决方案是将我的 package.json (A) 脚本更改为

"scripts": {
    "start": "node index.js",
    "build": "cd client && npm install && npm run build --prod"
  },

并将 package.json (B) 中的 devDependencies 中的所有内容移动到依赖项文件夹中。

【讨论】:

    猜你喜欢
    • 2017-09-13
    • 2018-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-14
    • 2021-01-19
    • 1970-01-01
    相关资源
    最近更新 更多