"ionic serve" command does not work in Windows environment

オープン
#3,852 コメント 12 件 リアクション 8 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
3/5
見積もり時間
1〜2日
初心者へのやさしさ
35/100
issue の種類
バグ
明瞭さ
おおむね明確
活発さ
停滞
技術スタック
node.js, typescript
領域
cli

調査の方向性

Windows cmd.exe で ionic serve --verbose を実行して失敗を再現し、動作する直接のコマンド ng run app:serve --host=0.0.0.0 --port=8100 と比較します。ionic serve のプロセス呼び出しと Windows での処理を追跡します; sh を必要とせずに ionic serve が正常に起動すれば完了です。

索引モデルが issue の本文から書いたものです。

説明

triage

Description:
I am having an error running the simple command of ionic serve natively in Windows. However, ionic cordova build android works fine in the same shell. This is the error that running ionic serve in cmd.exe gives:

ionic serve
> ng run app:serve --host=0.0.0.0 --port=8100
[ng] 'sh' is not recognized as an internal or external command,
[ng] operable program or batch file.

However, running ng run app:serve --host=0.0.0.0 --port=8100 directly works just fine...

The ionic serve command also works properly in Linux through WSL, however, the problem with that approach is that node-sass has to be recompiled with Linux bindings to do this.

Steps to Reproduce:

  • Start a new project with ionic start via cmd.exe in Windows (with all pre-requisites already successfully installed and configured)
  • Try to serve up the App with ionic serve
  • Note the error

Output:
Below is the more detailed error log running ionic serve --verbose. As can be seen in the log, windows: true is set. However, for some reason, ionic-cli is still trying to execute sh commands in a windows environment?

ionic serve --verbose
  ionic:lib Terminal info: { tty: true, ci: false, windows: true } +0ms
  ionic:lib CLI global options: { _: [ 'serve' ], help: null, h: null, verbose: true, quiet: null, interactive: true, color: true, confirm: null, json: null, project: null, '--': [] } +9ms
  ionic:lib:project Project type from config: @ionic/angular (angular) +0ms
  ionic:lib:project Project details: { configPath: 'C:\\Users\\json\\Projects\\test\\ionic.config.json', errors: [], context: 'app', type: 'angular' } +2ms
  ionic Context: { binPath: 'C:\\Users\\json\\AppData\\Roaming\\npm\\node_modules\\ionic\\bin\\ionic', libPath: 'C:\\Users\\json\\AppData\\Roaming\\npm\\node_modules\\ionic', execPath: 'C:\\Users\\json\\Projects\\test', version: '4.10.2' } +0ms
  ionic:lib:telemetry Sending telemetry for command: 'ionic serve' [ '--verbose', '--interactive', '--color' ] +0ms
  ionic:lib:hooks Looking for ionic:serve:before npm script. +0ms
  ionic:utils-network checking for open port on 0.0.0.0:8100 +0ms
  ionic:utils-network checking for open port on fe80::6187:39a0:932:443b:8100 +12ms
  ionic:utils-network checking for open port on 169.254.68.59:8100 +2ms
  ionic:utils-network checking for open port on fe80::2174:5154:8963:7486:8100 +2ms
  ionic:utils-network checking for open port on 192.168.0.30:8100 +4ms
  ionic:utils-network checking for open port on ::1:8100 +2ms
  ionic:utils-network checking for open port on 127.0.0.1:8100 +1ms
  ionic:lib:serve Looking for ionic:serve npm script. +0ms
> ng run app:serve --host=0.0.0.0 --port=8100
[ng] 'sh' is not recognized as an internal or external command,
[ng] operable program or batch file.
  ionic:lib:serve received unexpected close for ng (code: 1) +64ms

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

        The Ionic CLI will exit. Please check any output above for error details.
  ionic:cli-framework:utils:process onBeforeExit handler: process.exit received +0ms
  ionic:cli-framework:utils:process onBeforeExit handler: running 1 functions +1ms
  ionic:cli-framework:utils:process error while killing process tree for 14276: { Error: Command failed: taskkill /pid 14276 /T /F
  ionic:cli-framework:utils:process ERROR: The process "14276" not found.
  ionic:cli-framework:utils:process
  ionic:cli-framework:utils:process     at ChildProcess.exithandler (child_process.js:297:12)
  ionic:cli-framework:utils:process     at ChildProcess.emit (events.js:197:13)
  ionic:cli-framework:utils:process     at maybeClose (internal/child_process.js:978:16)
  ionic:cli-framework:utils:process     at Process.ChildProcess._handle.onexit (internal/child_process.js:265:5)
  ionic:cli-framework:utils:process   killed: false,
  ionic:cli-framework:utils:process   code: 128,
  ionic:cli-framework:utils:process   signal: null,
  ionic:cli-framework:utils:process   cmd: 'taskkill /pid 14276 /T /F' } +93ms
  ionic:cli-framework:utils:process onBeforeExit handler: error from function: { Error: Command failed: taskkill /pid 14276 /T /F
  ionic:cli-framework:utils:process ERROR: The process "14276" not found.
  ionic:cli-framework:utils:process
  ionic:cli-framework:utils:process     at ChildProcess.exithandler (child_process.js:297:12)
  ionic:cli-framework:utils:process     at ChildProcess.emit (events.js:197:13)
  ionic:cli-framework:utils:process     at maybeClose (internal/child_process.js:978:16)
  ionic:cli-framework:utils:process     at Process.ChildProcess._handle.onexit (internal/child_process.js:265:5)
  ionic:cli-framework:utils:process   killed: false,
  ionic:cli-framework:utils:process   code: 128,
  ionic:cli-framework:utils:process   signal: null,
  ionic:cli-framework:utils:process   cmd: 'taskkill /pid 14276 /T /F' } +4ms
  ionic:cli-framework:utils:process onBeforeExit handler: exiting (exit code 1) +2ms

My ionic info:

Ionic:

   ionic (Ionic CLI)             : 4.10.2 (C:\Users\json\AppData\Roaming\npm\node_modules\ionic)
   Ionic Framework               : @ionic/angular 4.0.1
   @angular-devkit/build-angular : 0.12.4
   @angular-devkit/schematics    : 7.2.4
   @angular/cli                  : 7.2.4
   @ionic/angular-toolkit        : 1.3.0

Cordova:

   cordova (Cordova CLI) : 8.1.2 (cordova-lib@8.1.1)
   Cordova Platforms     : android 7.1.4
   Cordova Plugins       : cordova-plugin-ionic-keyboard 2.1.3, cordova-plugin-ionic-webview 3.1.2, (and 4 other plugins)

System:

   Android SDK Tools : 26.1.1 (C:\Users\json\AppData\Local\Android\Sdk)
   NodeJS            : v11.9.0 (C:\Program Files\nodejs\node.exe)
   npm               : 6.5.0
   OS                : Windows 10
主要言語
TypeScript
スター
2k
フォーク
681
PR マージ指標
30日以内にマージされた PR はありません

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

ionic-team/ionic-cli のほかの issue

ionic-team/ionic-cli の issue をすべて見る

似ている issue

TypeScript の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。