Azure / static-web-apps-cli

Azure Static Web Apps CLI ✨
https://aka.ms/swa/cli-local-development
MIT License
584 stars 111 forks source link

apiLocation Cannot Resolve localhost #733

Closed PeytonRG closed 11 months ago

PeytonRG commented 11 months ago

Before filing this issue, please ensure you're using the latest CLI by running swa --version and comparing to the latest version on npm.

Are you accessing the CLI from the default port :4280 ?

Make sure you are accessing the URL printed in the console when running swa start!

ℹ️ NOTE: Make sure to enable debug logs when running any swa commands using --verbose=silly

Describe the bug After updating to versions of the SWA CLI greater than 1.1.2, my CLI fails to start up when the apiLocation is set to localhost. I first encountered this when updating to 1.1.3 on Node 16.20.1, and it still happens on 1.1.4. I have tested this on both Node 16.20.1 and Node 18.17.0 with the same results, since 1.1.4 includes a fix for Node 18. If I change appDevserverUrl and apiLocation from localhost to 127.0.0.1, the CLI will start up as normal, but this was not required on 1.1.2 and earlier.

To Reproduce Steps to reproduce the behavior:

  1. Set swa-cli.config.json appDevserverUrl and apiLocation to localhost, like so:
    
    {
    "$schema": "https://aka.ms/azure/static-web-apps-cli/schema",
    "configurations": {
    "web-app": {
      "appLocation": ".",
      "outputLocation": "build",
      "appBuildCommand": "npm run build",
      "run": "npm start",
      "appDevserverUrl": "http://localhost:3000",
      "apiLocation": "http://localhost:5003"
    }
    }
    }
2. Type in command 'swa start'
3. See error

**Expected behavior**
The SWA CLI should start up normally.

**Screenshots**
If applicable, add screenshots to help explain your problem.

**Desktop (please complete the following information):**

- OS: macOS
- Version 13.4.1 (c)

**Additional context**
As I mentioned above, a `swa-cli.config.json` with 127.0.0.1 rather than localhost allows the cli to start normally, as it did on 1.1.2 and earlier versions
``` JSON
{
  "$schema": "https://aka.ms/azure/static-web-apps-cli/schema",
  "configurations": {
    "web-app": {
      "appLocation": ".",
      "outputLocation": "build",
      "appBuildCommand": "npm run build",
      "run": "npm start",
      "appDevserverUrl": "http://localhost:3000",
      "apiLocation": "http://localhost:5003"
    }
  }
}
PeytonRG commented 11 months ago

My logs:

swa start --verbose=silly

Welcome to Azure Static Web Apps CLI (1.1.4)

Getting config file options from swa-cli.config.json...
Changed directory to /path/to/my-app/frontend/web-app
Using configuration "web-app" from file:
  /path/to/my-app/frontend/web-app/swa-cli.config.json

***********************************************************************
* WARNING: This emulator may not match the cloud environment exactly. *
* Always deploy and test your app in Azure.                           *
***********************************************************************

Checking if localhost:4280 is accepting TCP connections...
Port 4280 is available. Use it.
Resolved port number: 4280
appDevserverUrl provided, we will try connect to dev server at build
[swa] Skipping Api because folder "/path/to/my-app/frontend/web-app/http:/localhost:5003" is missing
Trying to read workflow config with values:
 - appLocation: /path/to/my-app/frontend/web-app
 - outputLocation: http://localhost:3000
 - apiLocation: http://localhost:5003
Detected dev server configuration
User workflow config:
 - appLocation: /path/to/my-app/frontend/web-app
 - outputLocation: http://localhost:3000
 - apiLocation: http://localhost:5003
Running echo 'No Data API found'. Skipping
Starting the SWA emulator with the following configuration:
- ssl:
  - 0: false
  - 1: <undefined>
  - 2: <undefined>
- env:
  - SWA_RUNTIME_CONFIG_LOCATION: /path/to/my-app/frontend/web-app
  - SWA_RUNTIME_WORKFLOW_LOCATION: <undefined>
  - SWA_CLI_DEBUG: silly
  - SWA_CLI_API_PORT: 7071
  - SWA_CLI_APP_LOCATION: /path/to/my-app/frontend/web-app
  - SWA_CLI_OUTPUT_LOCATION: http://localhost:3000
  - SWA_CLI_API_LOCATION: http://localhost:5003
  - SWA_CLI_DATA_API_LOCATION: <undefined>
  - SWA_CLI_DATA_API_PORT: undefined
  - SWA_CLI_HOST: localhost
  - SWA_CLI_PORT: 4280
  - SWA_CLI_APP_SSL: false
  - SWA_CLI_APP_SSL_CERT: <undefined>
  - SWA_CLI_APP_SSL_KEY: <undefined>
  - SWA_CLI_STARTUP_COMMAND: npm start
  - SWA_CLI_VERSION: 1.1.4
  - SWA_CLI_SERVER_TIMEOUT: 60
  - SWA_CLI_OPEN_BROWSER: false
- commands:
  - swa: node "/path/to/nvm/.nvm/versions/node/v18.17.0/lib/node_modules/@azure/static-web-apps-cli/dist/msha/server.js"
  - api: <undefined>
  - dataApi: <undefined>
  - run: cd "/path/to/my-app/frontend/web-app" && npm start
[run] 
[run] > web-app@0.1.0 start
[run] > react-scripts start
[run] 
[swa] Loading staticwebapp.config.json schema...
[swa] Schema loaded successfully from https://json.schemastore.org/staticwebapp.config.json
[swa] Compiling schema...
[swa] Reading content from staticwebapp.config.json...
[swa] Parsing staticwebapp.config.json...
[swa] Validating staticwebapp.config.json...
[swa] File validated successfully. Continuing with configuration!
[swa] Content parsed successfully
[swa] 
[swa] Found configuration file:
[swa]   /path/to/my-app/frontend/web-app/staticwebapp.config.json
[swa] 
[swa] Validating dev server config:
[swa]  - url: http://localhost:3000
[swa]  - timeout: 60
[swa] Checking if localhost:3000 is accepting TCP connections...
[swa] - Waiting for http://localhost:3000 to be ready
[run] Wed, 19 Jul 2023 23:47:55 GMT detect-port detect free port between [3000, 3010)
[run] Wed, 19 Jul 2023 23:47:55 GMT detect-port get free 0.0.0.0:3000
[run] Wed, 19 Jul 2023 23:47:55 GMT detect-port get free null:3000
[run] Wed, 19 Jul 2023 23:47:55 GMT detect-port get free localhost:3000
[run] Wed, 19 Jul 2023 23:47:55 GMT detect-port get free 192.168.4.158:3000
[run] Wed, 19 Jul 2023 23:47:55 GMT express:application set "x-powered-by" to true
[run] Wed, 19 Jul 2023 23:47:55 GMT express:application set "etag" to 'weak'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:application set "etag fn" to [Function: generateETag]
[run] Wed, 19 Jul 2023 23:47:55 GMT express:application set "env" to 'development'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:application set "query parser" to 'extended'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:application set "query parser fn" to [Function: parseExtendedQueryString]
[run] Wed, 19 Jul 2023 23:47:55 GMT express:application set "subdomain offset" to 2
[run] Wed, 19 Jul 2023 23:47:55 GMT express:application set "trust proxy" to false
[run] Wed, 19 Jul 2023 23:47:55 GMT express:application set "trust proxy fn" to [Function: trustNone]
[run] Wed, 19 Jul 2023 23:47:55 GMT express:application booting in development mode
[run] Wed, 19 Jul 2023 23:47:55 GMT express:application set "view" to [Function: View]
[run] Wed, 19 Jul 2023 23:47:55 GMT express:application set "views" to '/path/to/my-app/frontend/web-app/views'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:application set "jsonp callback name" to 'callback'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router use '/' query
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:layer new '/'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router use '/' expressInit
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:layer new '/'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:route new '*'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:layer new '*'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:route acl '*'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:layer new '/'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:route bind '*'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:layer new '/'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:route checkout '*'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:layer new '/'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:route connect '*'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:layer new '/'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:route copy '*'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:layer new '/'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:route delete '*'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:layer new '/'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:route get '*'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:layer new '/'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:route head '*'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:layer new '/'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:route link '*'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:layer new '/'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:route lock '*'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:layer new '/'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:route m-search '*'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:layer new '/'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:route merge '*'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:layer new '/'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:route mkactivity '*'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:layer new '/'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:route mkcalendar '*'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:layer new '/'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:route mkcol '*'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:layer new '/'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:route move '*'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:layer new '/'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:route notify '*'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:layer new '/'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:route options '*'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:layer new '/'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:route patch '*'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:layer new '/'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:route post '*'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:layer new '/'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:route propfind '*'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:layer new '/'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:route proppatch '*'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:layer new '/'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:route purge '*'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:layer new '/'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:route put '*'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:layer new '/'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:route rebind '*'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:layer new '/'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:route report '*'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:layer new '/'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:route search '*'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:layer new '/'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:route source '*'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:layer new '/'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:route subscribe '*'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:layer new '/'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:route trace '*'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:layer new '/'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:route unbind '*'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:layer new '/'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:route unlink '*'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:layer new '/'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:route unlock '*'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:layer new '/'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:route unsubscribe '*'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:layer new '/'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:route new '/__webpack_dev_server__/sockjs.bundle.js'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:layer new '/__webpack_dev_server__/sockjs.bundle.js'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:route get '/__webpack_dev_server__/sockjs.bundle.js'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:layer new '/'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:route new '/webpack-dev-server/invalidate'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:layer new '/webpack-dev-server/invalidate'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:route get '/webpack-dev-server/invalidate'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:layer new '/'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:route new '/webpack-dev-server'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:layer new '/webpack-dev-server'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:route get '/webpack-dev-server'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:layer new '/'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router use '/' handleWebpackInternalMiddleware
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:layer new '/'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router use '/' compression
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:layer new '/'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router use '*' bound setHeaders
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:layer new '*'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router use '/' middleware
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:layer new '/'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router use '/' serveStatic
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:layer new '/'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router use '/' <anonymous>
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:layer new '/'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router use '/' middleware
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:layer new '/'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router use '/' serveStatic
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:layer new '/'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router use '/' middleware
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:layer new '/'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router use '/' bound serveMagicHtml
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:layer new '/'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router use '*' middleware
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:layer new '*'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router use '/' redirectServedPathMiddleware
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:layer new '/'
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router use '/' noopServiceWorkerMiddleware
[run] Wed, 19 Jul 2023 23:47:55 GMT express:router:layer new '/'
[run] (node:34322) [DEP_WEBPACK_DEV_SERVER_ON_AFTER_SETUP_MIDDLEWARE] DeprecationWarning: 'onAfterSetupMiddleware' option is deprecated. Please use the 'setupMiddlewares' option.
[run] (Use `node --trace-deprecation ...` to show where the warning was created)
[run] (node:34322) [DEP_WEBPACK_DEV_SERVER_ON_BEFORE_SETUP_MIDDLEWARE] DeprecationWarning: 'onBeforeSetupMiddleware' option is deprecated. Please use the 'setupMiddlewares' option.
[run] 2023-07-19T23:47:55.438Z eslintrc:config-array-factory Loading {extends:"/path/to/my-app/frontend/web-app/node_modules/eslint-config-react-app/base.js"} relative to 
[run] 2023-07-19T23:47:55.438Z eslintrc:config-array-factory package.json was not found: Cannot find module '/path/to/my-app/frontend/web-app/node_modules/eslint-config-react-app/base.js/package.json'
[run] Require stack:
[run] - /path/to/my-app/frontend/web-app/__placeholder__.js
[run] 2023-07-19T23:47:55.438Z eslintrc:config-array-factory Loaded: /path/to/my-app/frontend/web-app/node_modules/eslint-config-react-app/base.js (/path/to/my-app/frontend/web-app/node_modules/eslint-config-react-app/base.js)
[run] 2023-07-19T23:47:55.438Z eslintrc:config-array-factory Loading JS config file: /path/to/my-app/frontend/web-app/node_modules/eslint-config-react-app/base.js
[run] 2023-07-19T23:47:55.439Z eslintrc:config-array-factory Loading parser "@babel/eslint-parser" from /path/to/my-app/frontend/web-app/node_modules/eslint-config-react-app/base.js
[run] 2023-07-19T23:47:55.440Z eslintrc:config-array-factory Loaded: @babel/eslint-parser@7.19.1 (/path/to/my-app/frontend/web-app/node_modules/@babel/eslint-parser/lib/index.cjs)
[run] 2023-07-19T23:47:55.445Z eslintrc:config-array-factory Loading plugin "react" from /path/to/my-app/frontend/web-app/node_modules/eslint-config-react-app/base.js
[run] 2023-07-19T23:47:55.446Z eslintrc:config-array-factory Loaded: eslint-plugin-react@7.32.2 (/path/to/my-app/frontend/web-app/node_modules/eslint-plugin-react/index.js)
[run] 2023-07-19T23:47:55.488Z eslintrc:config-array-factory Plugin /path/to/my-app/frontend/web-app/node_modules/eslint-plugin-react/index.js loaded in: 42ms
[run] 2023-07-19T23:47:55.488Z eslintrc:config-array-factory Loading .eslintignore file: /path/to/my-app/frontend/web-app/.eslintignore
[run] 2023-07-19T23:47:55.489Z eslintrc:ignore-pattern Create with: [ IgnorePattern { patterns: [ '/**/node_modules/*' ], basePath: '/path/to/my-app/frontend/web-app', loose: false } ]
[run] 2023-07-19T23:47:55.490Z eslintrc:ignore-pattern   processed: { basePath: '/path/to/my-app/frontend/web-app', patterns: [ '/**/node_modules/*' ] }
[run] 2023-07-19T23:47:55.490Z eslint:lint-result-cache Caching results to /path/to/my-app/frontend/web-app/node_modules/.cache/.eslintcache
[run] 2023-07-19T23:47:55.490Z eslint:lint-result-cache Using "metadata" strategy to detect changes
[run] 2023-07-19T23:47:55.495Z eslintrc:ignore-pattern Create with: [ IgnorePattern { patterns: [ '/**/node_modules/*' ], basePath: '/path/to/my-app/frontend/web-app', loose: false } ]
[run] 2023-07-19T23:47:55.495Z eslintrc:ignore-pattern   processed: { basePath: '/path/to/my-app/frontend/web-app', patterns: [ '/**/node_modules/*' ] }
[run] Starting the development server...
[run] 
[swa] Connected to tcp:127.0.0.1:3000 successfully
[swa] ✔ http://localhost:3000 validated successfully
[swa] Validating dev server config:
[swa]  - url: http://localhost:5003
[swa]  - timeout: 60
[swa] Checking if localhost:5003 is accepting TCP connections...
[swa] Fetch http://127.0.0.1:5003 failed with status 404 Not Found
[swa] Could not fetch http://127.0.0.1:5003
[swa] Fetch http://[::1]:5003 failed with status 404 Not Found
[swa] Could not fetch http://[::1]:5003
[swa] ✖ Error: "localhost" can not be resolved to either IPv4 or IPv6. Please check your network settings.
[swa] killing SWA CLI
[swa] node "/path/to/nvm/.nvm/versions/node/v18.17.0/lib/node_modules/@azure/static-web-apps-cli/dist/msha/server.js" exited with code 0
--> Sending SIGTERM to other processes..
[run] cd "/path/to/my-app/frontend/web-app" && npm start exited with code SIGTERM
✖ SWA emulator stoped because the --run command exited with code SIGTERM.
cjk7989 commented 11 months ago

Hi @PeytonRG, could you try replacing the key "apiLocation" in swa-cli.config.json with "apiDevserverUrl" and see if it works?

PeytonRG commented 11 months ago

Apologies for the delayed response. I just tried that out, and it looks like I'm getting the same result.

swa start --verbose=silly

Welcome to Azure Static Web Apps CLI (1.1.4)

Getting config file options from swa-cli.config.json...
Changed directory to /path/to/my-app/frontend/web-app
Using configuration "web-app" from file:
  /path/to/my-app/frontend/web-app/swa-cli.config.json

***********************************************************************
* WARNING: This emulator may not match the cloud environment exactly. *
* Always deploy and test your app in Azure.                           *
***********************************************************************

Checking if localhost:4280 is accepting TCP connections...
Port 4280 is available. Use it.
Resolved port number: 4280
appDevserverUrl provided, we will try connect to dev server at build
Api Dev Server found: http://localhost:5003
Trying to read workflow config with values:
 - appLocation: /path/to/my-app/frontend/web-app
 - outputLocation: http://localhost:3000
 - apiLocation: http://localhost:5003
Detected dev server configuration
User workflow config:
 - appLocation: /path/to/my-app/frontend/web-app
 - outputLocation: http://localhost:3000
 - apiLocation: http://localhost:5003
Running echo 'No Data API found'. Skipping
Starting the SWA emulator with the following configuration:
- ssl:
  - 0: false
  - 1: <undefined>
  - 2: <undefined>
- env:
  - SWA_RUNTIME_CONFIG_LOCATION: /path/to/my-app/frontend/web-app
  - SWA_RUNTIME_WORKFLOW_LOCATION: <undefined>
  - SWA_CLI_DEBUG: silly
  - SWA_CLI_API_PORT: 5003
  - SWA_CLI_APP_LOCATION: /path/to/my-app/frontend/web-app
  - SWA_CLI_OUTPUT_LOCATION: http://localhost:3000
  - SWA_CLI_API_LOCATION: http://localhost:5003
  - SWA_CLI_DATA_API_LOCATION: <undefined>
  - SWA_CLI_DATA_API_PORT: undefined
  - SWA_CLI_HOST: localhost
  - SWA_CLI_PORT: 4280
  - SWA_CLI_APP_SSL: false
  - SWA_CLI_APP_SSL_CERT: <undefined>
  - SWA_CLI_APP_SSL_KEY: <undefined>
  - SWA_CLI_STARTUP_COMMAND: npm start
  - SWA_CLI_VERSION: 1.1.4
  - SWA_CLI_SERVER_TIMEOUT: 60
  - SWA_CLI_OPEN_BROWSER: false
- commands:
  - swa: node "/path/to/nvm/.nvm/versions/node/v18.17.0/lib/node_modules/@azure/static-web-apps-cli/dist/msha/server.js"
  - api: <undefined>
  - dataApi: <undefined>
  - run: cd "/path/to/my-app/frontend/web-app" && npm start
[run] 
[run] > web-app@0.1.0 start
[run] > react-scripts start
[run] 
[swa] Loading staticwebapp.config.json schema...
[swa] Schema loaded successfully from https://json.schemastore.org/staticwebapp.config.json
[swa] Compiling schema...
[swa] Reading content from staticwebapp.config.json...
[swa] Parsing staticwebapp.config.json...
[swa] Validating staticwebapp.config.json...
[swa] File validated successfully. Continuing with configuration!
[swa] Content parsed successfully
[swa] 
[swa] Found configuration file:
[swa]   /path/to/my-app/frontend/web-app/staticwebapp.config.json
[swa] 
[swa] Validating dev server config:
[swa]  - url: http://localhost:3000
[swa]  - timeout: 60
[swa] Checking if localhost:3000 is accepting TCP connections...
[swa] - Waiting for http://localhost:3000 to be ready
[run] Mon, 31 Jul 2023 14:29:12 GMT detect-port detect free port between [3000, 3010)
[run] Mon, 31 Jul 2023 14:29:12 GMT detect-port get free 0.0.0.0:3000
[run] Mon, 31 Jul 2023 14:29:12 GMT detect-port get free null:3000
[run] Mon, 31 Jul 2023 14:29:12 GMT detect-port get free localhost:3000
[run] Mon, 31 Jul 2023 14:29:12 GMT detect-port get free 192.168.4.158:3000
[run] Mon, 31 Jul 2023 14:29:12 GMT express:application set "x-powered-by" to true
[run] Mon, 31 Jul 2023 14:29:12 GMT express:application set "etag" to 'weak'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:application set "etag fn" to [Function: generateETag]
[run] Mon, 31 Jul 2023 14:29:12 GMT express:application set "env" to 'development'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:application set "query parser" to 'extended'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:application set "query parser fn" to [Function: parseExtendedQueryString]
[run] Mon, 31 Jul 2023 14:29:12 GMT express:application set "subdomain offset" to 2
[run] Mon, 31 Jul 2023 14:29:12 GMT express:application set "trust proxy" to false
[run] Mon, 31 Jul 2023 14:29:12 GMT express:application set "trust proxy fn" to [Function: trustNone]
[run] Mon, 31 Jul 2023 14:29:12 GMT express:application booting in development mode
[run] Mon, 31 Jul 2023 14:29:12 GMT express:application set "view" to [Function: View]
[run] Mon, 31 Jul 2023 14:29:12 GMT express:application set "views" to '/path/to/my-app/frontend/web-app/views'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:application set "jsonp callback name" to 'callback'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router use '/' query
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:layer new '/'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router use '/' expressInit
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:layer new '/'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:route new '*'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:layer new '*'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:route acl '*'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:layer new '/'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:route bind '*'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:layer new '/'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:route checkout '*'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:layer new '/'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:route connect '*'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:layer new '/'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:route copy '*'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:layer new '/'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:route delete '*'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:layer new '/'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:route get '*'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:layer new '/'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:route head '*'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:layer new '/'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:route link '*'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:layer new '/'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:route lock '*'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:layer new '/'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:route m-search '*'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:layer new '/'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:route merge '*'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:layer new '/'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:route mkactivity '*'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:layer new '/'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:route mkcalendar '*'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:layer new '/'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:route mkcol '*'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:layer new '/'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:route move '*'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:layer new '/'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:route notify '*'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:layer new '/'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:route options '*'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:layer new '/'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:route patch '*'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:layer new '/'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:route post '*'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:layer new '/'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:route propfind '*'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:layer new '/'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:route proppatch '*'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:layer new '/'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:route purge '*'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:layer new '/'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:route put '*'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:layer new '/'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:route rebind '*'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:layer new '/'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:route report '*'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:layer new '/'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:route search '*'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:layer new '/'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:route source '*'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:layer new '/'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:route subscribe '*'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:layer new '/'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:route trace '*'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:layer new '/'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:route unbind '*'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:layer new '/'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:route unlink '*'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:layer new '/'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:route unlock '*'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:layer new '/'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:route unsubscribe '*'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:layer new '/'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:route new '/__webpack_dev_server__/sockjs.bundle.js'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:layer new '/__webpack_dev_server__/sockjs.bundle.js'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:route get '/__webpack_dev_server__/sockjs.bundle.js'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:layer new '/'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:route new '/webpack-dev-server/invalidate'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:layer new '/webpack-dev-server/invalidate'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:route get '/webpack-dev-server/invalidate'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:layer new '/'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:route new '/webpack-dev-server'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:layer new '/webpack-dev-server'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:route get '/webpack-dev-server'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:layer new '/'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router use '/' handleWebpackInternalMiddleware
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:layer new '/'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router use '/' compression
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:layer new '/'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router use '*' bound setHeaders
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:layer new '*'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router use '/' middleware
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:layer new '/'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router use '/' serveStatic
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:layer new '/'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router use '/' <anonymous>
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:layer new '/'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router use '/' middleware
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:layer new '/'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router use '/' serveStatic
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:layer new '/'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router use '/' middleware
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:layer new '/'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router use '/' bound serveMagicHtml
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:layer new '/'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router use '*' middleware
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:layer new '*'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router use '/' redirectServedPathMiddleware
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:layer new '/'
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router use '/' noopServiceWorkerMiddleware
[run] Mon, 31 Jul 2023 14:29:12 GMT express:router:layer new '/'
[run] (node:6538) [DEP_WEBPACK_DEV_SERVER_ON_AFTER_SETUP_MIDDLEWARE] DeprecationWarning: 'onAfterSetupMiddleware' option is deprecated. Please use the 'setupMiddlewares' option.
[run] (Use `node --trace-deprecation ...` to show where the warning was created)
[run] (node:6538) [DEP_WEBPACK_DEV_SERVER_ON_BEFORE_SETUP_MIDDLEWARE] DeprecationWarning: 'onBeforeSetupMiddleware' option is deprecated. Please use the 'setupMiddlewares' option.
[run] 2023-07-31T14:29:12.513Z eslintrc:config-array-factory Loading {extends:"/path/to/my-app/frontend/web-app/node_modules/eslint-config-react-app/base.js"} relative to 
[run] 2023-07-31T14:29:12.513Z eslintrc:config-array-factory package.json was not found: Cannot find module '/path/to/my-app/frontend/web-app/node_modules/eslint-config-react-app/base.js/package.json'
[run] Require stack:
[run] - /path/to/my-app/frontend/web-app/__placeholder__.js
[run] 2023-07-31T14:29:12.513Z eslintrc:config-array-factory Loaded: /path/to/my-app/frontend/web-app/node_modules/eslint-config-react-app/base.js (/path/to/my-app/frontend/web-app/node_modules/eslint-config-react-app/base.js)
[run] 2023-07-31T14:29:12.513Z eslintrc:config-array-factory Loading JS config file: /path/to/my-app/frontend/web-app/node_modules/eslint-config-react-app/base.js
[run] 2023-07-31T14:29:12.515Z eslintrc:config-array-factory Loading parser "@babel/eslint-parser" from /path/to/my-app/frontend/web-app/node_modules/eslint-config-react-app/base.js
[run] 2023-07-31T14:29:12.515Z eslintrc:config-array-factory Loaded: @babel/eslint-parser@7.19.1 (/path/to/my-app/frontend/web-app/node_modules/@babel/eslint-parser/lib/index.cjs)
[run] 2023-07-31T14:29:12.521Z eslintrc:config-array-factory Loading plugin "react" from /path/to/my-app/frontend/web-app/node_modules/eslint-config-react-app/base.js
[run] 2023-07-31T14:29:12.521Z eslintrc:config-array-factory Loaded: eslint-plugin-react@7.32.2 (/path/to/my-app/frontend/web-app/node_modules/eslint-plugin-react/index.js)
[run] 2023-07-31T14:29:12.561Z eslintrc:config-array-factory Plugin /path/to/my-app/frontend/web-app/node_modules/eslint-plugin-react/index.js loaded in: 40ms
[run] 2023-07-31T14:29:12.561Z eslintrc:config-array-factory Loading .eslintignore file: /path/to/my-app/frontend/web-app/.eslintignore
[run] 2023-07-31T14:29:12.562Z eslintrc:ignore-pattern Create with: [ IgnorePattern { patterns: [ '/**/node_modules/*' ], basePath: '/path/to/my-app/frontend/web-app', loose: false } ]
[run] 2023-07-31T14:29:12.563Z eslintrc:ignore-pattern   processed: { basePath: '/path/to/my-app/frontend/web-app', patterns: [ '/**/node_modules/*' ] }
[run] 2023-07-31T14:29:12.563Z eslint:lint-result-cache Caching results to /path/to/my-app/frontend/web-app/node_modules/.cache/.eslintcache
[run] 2023-07-31T14:29:12.563Z eslint:lint-result-cache Using "metadata" strategy to detect changes
[run] 2023-07-31T14:29:12.568Z eslintrc:ignore-pattern Create with: [ IgnorePattern { patterns: [ '/**/node_modules/*' ], basePath: '/path/to/my-app/frontend/web-app', loose: false } ]
[run] 2023-07-31T14:29:12.568Z eslintrc:ignore-pattern   processed: { basePath: '/path/to/my-app/frontend/web-app', patterns: [ '/**/node_modules/*' ] }
[run] Starting the development server...
[run] 
[swa] Connected to tcp:127.0.0.1:3000 successfully
[swa] ✔ http://localhost:3000 validated successfully
[swa] Validating dev server config:
[swa]  - url: http://localhost:5003
[swa]  - timeout: 60
[swa] Checking if localhost:5003 is accepting TCP connections...
[swa] Fetch http://[::1]:5003 failed with status 404 Not Found
[swa] Could not fetch http://[::1]:5003
[swa] Fetch http://127.0.0.1:5003 failed with status 404 Not Found
[swa] Could not fetch http://127.0.0.1:5003
[swa] ✖ Error: "localhost" can not be resolved to either IPv4 or IPv6. Please check your network settings.
[swa] killing SWA CLI
[swa] node "/path/to/nvm/.nvm/versions/node/v18.17.0/lib/node_modules/@azure/static-web-apps-cli/dist/msha/server.js" exited with code 0
--> Sending SIGTERM to other processes..
[run] /path/to/my-app/frontend/web-app/node_modules/react-scripts/scripts/start.js:19
[run]   throw err;
[run]   ^
[run] 
[run] RpcIpcMessagePortClosedError: Process 6547 exited [SIGTERM].
[run]     at /path/to/my-app/frontend/web-app/node_modules/fork-ts-checker-webpack-plugin/lib/rpc/rpc-ipc/RpcIpcMessagePort.js:19:23
[run]     at Generator.next (<anonymous>)
[run]     at /path/to/my-app/frontend/web-app/node_modules/fork-ts-checker-webpack-plugin/lib/rpc/rpc-ipc/RpcIpcMessagePort.js:8:71
[run]     at new Promise (<anonymous>)
[run]     at __awaiter (/path/to/my-app/frontend/web-app/node_modules/fork-ts-checker-webpack-plugin/lib/rpc/rpc-ipc/RpcIpcMessagePort.js:4:12)
[run]     at ChildProcess.handleExit (/path/to/my-app/frontend/web-app/node_modules/fork-ts-checker-webpack-plugin/lib/rpc/rpc-ipc/RpcIpcMessagePort.js:18:42)
[run]     at ChildProcess.emit (node:events:514:28)
[run]     at ChildProcess._handle.onexit (node:internal/child_process:291:12) {
[run]   code: null,
[run]   signal: 'SIGTERM'
[run] }
[run] 
[run] Node.js v18.17.0
[run] cd "/path/to/my-app/frontend/web-app" && npm start exited with code SIGTERM
✖ SWA emulator stoped because the --run command exited with code SIGTERM.
cjk7989 commented 11 months ago

[swa] Could not fetch http://127.0.0.1:5003

Thanks for the detailed log. It seems that if you use an api dev server instead of a local api folder, you should start API server on port 5003 manually before start swa-cli, otherwise listening on http://localhost:5003 will failed. (See 4.2 of Static Web Apps CLI (azure.github.io)).

[run] > react-scripts start

I notice that you are using react. So could you make sure that the api can work when you run "npm start" to start your React app? Then you can also confirm the port of api, whether it is 5003, 3000 or another one. Please use it to set apiDevserverUrl.

PeytonRG commented 11 months ago

Yeah, I always start my api before running swa start for that reason. This is a different issue. My configuration worked fine in 1.1.2 and earlier, but no longer works if I update to 1.1.3 or later. Like I mentioned in the first post on this issue, changing my config so everything points directly to 127.0.0.1 rather than localhost allows it to start up normally, but there shouldn't be breaking changes in a patch version that would force me to modify my config to get it working again.

The app starts up fine with npm start, it's just swa start that immediately fails with the above error. And the api runs on port 5003.

cjk7989 commented 11 months ago

My configuration worked fine in 1.1.2 and earlier

I find the reason is that after v1.1.3, swa-cli began to validate apiDevserverUrl. If it tries to fetch apiDevserverUrl and find that the response has invalid status code like 404, it will throw an error:

[swa] Fetch http://127.0.0.1:5003 failed with status 404 Not Found

We have submitted PR #737 to solve the issue. Now your apiDevserverUrl will be accepted. Before a new version of swa-cli is released, you can feel free to download and test it from GitHub. Here are the steps:

Happy to know if it works for you. I will also appreciate if you want to share the idea when the scenario (apiDevserverUrl can be fetched while the status is 404) happens.

PeytonRG commented 11 months ago

I just followed the steps you listed and the fix appears to be working! Thank you very much. As for why there are the 404s on 127.0.0.1 and ::1, I'm not sure. The api it's connecting to is a .NET 6 api with swagger serving http on port 5003 and https on 7003.

[run] Starting the development server...
[run] 
[swa] ✔ http://localhost:3000 validated successfully
[swa] Fetch http://127.0.0.1:5003 with status 404 Not Found
[swa] Fetch http://[::1]:5003 with status 404 Not Found
[swa] Unable to query functions trigger types from local function app. Skipping.
[swa] Note: Only Http trigger functions are supported. See https://docs.microsoft.com/azure/static-web-apps/apis
[swa] 
[swa] Using dev server for static content:
[swa]   http://localhost:3000
[swa] 
[swa] Using dev server for API:
[swa]   http://localhost:5003
[swa] 
[swa] Azure Static Web Apps emulator started at http://localhost:4280. Press CTRL+C to exit.
itpropro commented 10 months ago

My configuration worked fine in 1.1.2 and earlier

I find the reason is that after v1.1.3, swa-cli began to validate apiDevserverUrl. If it tries to fetch apiDevserverUrl and find that the response has invalid status code like 404, it will throw an error:

[swa] Fetch http://127.0.0.1:5003 failed with status 404 Not Found

We have submitted PR #737 to solve the issue. Now your apiDevserverUrl will be accepted. Before a new version of swa-cli is released, you can feel free to download and test it from GitHub. Here are the steps:

  • git clone https://github.com/Azure/static-web-apps-cli.git
  • cd into the folder "static-web-apps-cli"
  • run "npm install", then "npm run build"
  • run "npm link ./", which allows you to use this version of swa-cli globally.
    • if you want to update the version of swa-cli, just delete this local folder "static-web-apps-cli" and run "npm install -g @azure/static-web-apps-cli" to reinstall the official version.

Happy to know if it works for you. I will also appreciate if you want to share the idea when the scenario (apiDevserverUrl can be fetched while the status is 404) happens.

Here is the version for pnpm:

git clone https://github.com/Azure/static-web-apps-cli.git
cd .\static-web-apps-cli\
pnpm install
pnpm build
pnpm link --global

Hey @cjk7989, any timeline on a release of this fix?

cjk7989 commented 10 months ago

Hey @cjk7989, any timeline on a release of this fix?

Plan to release the next version in one or two weeks : )

itpropro commented 8 months ago

@cjk7989 the bug is still there and a fix still not released, it is nearly two month now.

cjk7989 commented 8 months ago

Hi @itpropro, sorry for the delay. Please install the 1.1.5 version of swa-cli, which contains the fix of this issue.