Ionic serve命令未找到参数。

8
我有一个Angular项目,想要在移动端使用Ionic。我已经执行了ionic init命令。
当我运行ionic serve命令时,出现以下错误:
> ng.cmd run app:serve --host=localhost --port=8100
[ng] Error: Unknown arguments: host, port

[ERROR] ng has unexpectedly closed (exit code 1).

        The Ionic CLI will exit. Please check any output above for error details.

这是我的package.json文件:

{
  "scripts": {
    "ng": "ng",
    "start": "ng serve",
    "build": "ng build",
    "build:prod": "ng build --configuration production",
    "watch": "ng build --watch --configuration development",
    "test": "ng test"
  },
  "private": true,
  "dependencies": {
    "@angular/animations": "^14.2.4",
    "@angular/cdk": "^14.2.3",
    "@angular/common": "^14.2.4",
    "@angular/compiler": "^14.2.4",
    "@angular/core": "^14.2.4",
    "@angular/forms": "^14.2.4",
    "@angular/material": "^14.2.3",
    "@angular/platform-browser": "^14.2.4",
    "@angular/platform-browser-dynamic": "^14.2.4",
    "@angular/router": "^14.2.4",
    "angular-material-dynamic-themes-eli": "^1.0.4",
    "bootstrap": "^5.1.3",
    "flag-icons": "^6.4.4",
    "material-design-icons": "^3.0.1",
    "ngx-editor": "^15.0.0",
    "rxjs": "^7.4.0",
    "zone.js": "~0.11.4"
  },
  "devDependencies": {
    "@angular-devkit/build-angular": "^14.2.4",
    "@angular/cli": "^14.2.4",
    "@angular/compiler-cli": "^14.2.4",
    "@types/jasmine": "^4.3.0",
    "@types/node": "^18.7.23",
    "jasmine-core": "^4.4.0",
    "karma": "^6.4.1",
    "karma-chrome-launcher": "~3.1.0",
    "karma-coverage": "~2.0.3",
    "karma-jasmine": "~4.0.0",
    "karma-jasmine-html-reporter": "~1.7.0",
    "tslib": "^2.3.1",
    "typescript": "~4.8.4"
  }
}

如何解决缺失主机/端口的参数?

这里看到了SimpleDev的评论后,我试过了所有的答案:

  • 使用npm install @ionic/app-scripts@latest --save-dev@ionic/app-scripts已经被弃用,并没有更新到 Angular 14 或 15。运行它时,会出现Undefined variable standalone_static_library in binding.gyp while trying to load binding.gyp错误。
  • 删除node_modules并重新安装npm install:没有改变任何东西
  • 在这里卸载并重新安装 Angular/Ionic CLI:已经尝试过,但没有改变任何东西
  • 有些回答是复制的,其他的也一样:都不起作用

你是否安装了 https://nodejs.org/en/ 的 lts 版本?由于错误提到找不到主机,通常是 nodejs 创建主机而不是 ionic (angular),ionic (angular) 只是指向主机而不是创建它的人。因此,请检查您的 node js 是否已安装,如果已安装,请检查其是否正常工作(搜索此点),因为有时候 npm 可以工作但不是完全功能,因此请确保从 node js 中可以创建服务器,然后您就可以确定问题是否来自 nodejs。 - Mostafa Harb
这些解决方案中有没有帮助到您?Ionic 4 - 获取 [ERROR] ng has unexpectedly closed (exit code 1) - Simple Dev
1
@SimpleDev 尝试了那些答案后,似乎出现了问题,因为 python2 命令不起作用,即使我已经安装了 python2.7(可以使用 py -2.7)。 - Elikill58
@SimpleDev 我已经尝试了,我刚刚编辑了我的帖子以提供完整的答案。 - Elikill58
@FidaKhattak 它没有改变任何东西。 - Elikill58
显示剩余2条评论
6个回答

4

我曾经遇到过这个问题,但最终在我正在处理的项目中解决了它。看起来,在app:serve中的app部分是动态的,并与您在angular.json中定义的angular项目名称相关。尽管安装程序已经使用相同的angular.json文件找到项目名称并将许多ng命令添加到angular.json中,但ionic CLI工具似乎假定这始终是app。对我有用的解决方法是通过编辑angular.json配置将项目重命名为app

{
  "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
  "version": 1,
  "newProjectRoot": "projects",
  "projects": {
    "myapp": {
      "projectType": "application",

在上面的例子中,myapp 应该改为 app。同时搜索其他出现的 myapp,你会发现还有一些命令如 myapp:build, myapp:serve等,这些也需要重命名。
现在,当我运行 ionic serve 时,没有错误并且 Angular 服务器实际上已经启动。

这个对我解决了问题。 - undefined

2
"

对我有效的方法是像在Angular CLI中一样指定项目名称:

ionic serve --project {{project}}

"

这是一个有效且可行的解决方案。 - Zahid Ibrahim Shaikh

2

与其重命名应用程序或更改脚本(这对我没有起作用),我更新了ionic.config.json

对于我来说,<app-name>值是不正确的,它是app。所以我将其更改为正确的名称app-name

{
  "defaultProject": "app-name",
  "projects": {
    "app-name": {
      "name": "app-name",
      "type": "angular"
    }
  }
}

现在,ionic capacitor run android -l 已按预期运行。

你改了什么?电容器吗? - Elikill58
抱歉,我已经更新了答案。 - Peter Boomsma

1
Leon Boot的回答的基础上,我添加了一个脚本到我的package.json中来运行我的应用程序。我不想更改我的应用程序名称。 ionic serve命令本身只是一个输出作为脚本:
 ng.cmd run app:serve --host=localhost --port=8100

app 部分只是应用程序的名称,它将提供服务。 我尝试查找一些控制此值的ionic配置文件设置,但在ionic serveconfiguration file的文档中没有找到任何内容。

我通过编写自己的脚本解决了这个限制。 我将ionic serve命令的输出复制到脚本中,并将 app 更改为我的应用程序名称。 现在我的 packages.json 文件有这个 "ionic:serve" 脚本:

 {
  "name": "my-application-name",
  "version": "0.0.0",
  "scripts": {
    "ng": "ng",
    "start": "ng serve",
    "build": "ng build",
    "watch": "ng build --watch --configuration development",
    "test": "ng test",
    "ionic:serve": "ng.cmd run my-application-name:serve --host=localhost --port=8100"
  },...

对于您的应用程序,请将my-application-name替换为您的应用程序名称。

现在使用ionic serve运行此脚本:

npm run ionic:serve

0
我希望这个解决方案能对您有所帮助:
  1. npm cache clean --force

  2. npm uninstall -g @angular/cli

  3. npm uninstall -g @ionic/cli

  4. npm install -g @angular/cli

  5. npm install -g @ionic/cli


我得到了完全相同的错误 :/ - Elikill58
你试过这个解决方案了吗?! - Aymen Missaoui
是的,我尝试了你的解决方案,但什么也没有改变。 - Elikill58
如果我没有得到其他答案,即使它们不起作用,为了不失去它们,我会给你+100声望奖励。 - Elikill58

0

这是我在ionic中进行每个angular项目的简单易行的方法。

  1. 使用ionic start projectName创建新的ionic项目
  2. 删除ionic的src文件夹
  3. 复制粘贴angular的src文件夹
  4. 安装你想要在ionic项目上安装的angular模块

如果你想在angular项目上运行ionic项目,会有很多错误。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接