【发布时间】: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