ionic-team / ionic-team/ionic-cli
"ionic serve" command does not work in Windows environment
- 主要言語
- TypeScript
- スター
- 2k
- フォーク
- 682
- PR マージ指標
- 30日以内にマージされた PR はありません
説明
**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
```
コントリビューションガイド
調査の方向性
Reproduce the failure by running `ionic serve --verbose` in Windows cmd.exe, then compare it with the working direct `ng run app:serve --host=0.0.0.0 --port=8100` command. Trace the `ionic serve` process invocation and its Windows handling; done means `ionic serve` starts successfully without requiring `sh`.
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- node.js, typescript
- 領域
- cli
- issue の種類
- バグ
- 難易度
- 3/5
- 見積もり時間
- 1〜2日
- 活発さ
- 停滞
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 35/100