angular-cli-ghpages icon indicating copy to clipboard operation
angular-cli-ghpages copied to clipboard

deploy error if outputPath.browser is not set

Open ago1024 opened this issue 1 year ago • 3 comments

I'm using [email protected] to deploy project converted from older angular versions to angular 18 with the new build system.

The angular builder configuration has

"outputPath": {
  "base": "dist"
}

"browser" is not set as it has the default value of browser. https://v17.angular.io/guide/workspace-config#output-path-configuration

ng deploy will fail with

❌ An error occurred when trying to deploy:
The "path" argument must be of type string. Received undefined

Changing the angular builder configuration to

"outputPath": {
  "base": "dist",
  "browser": "browser"
}

fixes the error.

This is caused by deploy/actions.ts where "obj.browser" is expected to have a value.

    if (typeof buildOptions.outputPath === 'string') {
      dir = path.join(buildOptions.outputPath, 'browser');
    } else {
      const obj = buildOptions.outputPath as any;
      dir = path.join(obj.base, obj.browser)  <--- Error
    }

ago1024 avatar Nov 17 '24 11:11 ago1024

Thanks for the report! I'm not sure whether we can actually handle all edge cases completely, but I think it's possible to detect this.

Can you please try defining the deploy directory manually in the builder options? This would be the recommended workaround.

"deploy": {
  "builder": "angular-cli-ghpages:deploy",
  "options": {
    "dir": "dist/browser"
  }
}

If this works, we probably will not make this a priority. However, pull requests are welcome, so we really appreciate your help 😊

fmalcher avatar Nov 17 '24 12:11 fmalcher

For reference, the current docs page: https://angular.dev/reference/configs/workspace-config

fmalcher avatar Nov 17 '24 12:11 fmalcher

The solution of fmalcher also works for Angular 19.

ChristophHu avatar Dec 30 '24 09:12 ChristophHu