deploy error if outputPath.browser is not set
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
}
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 😊
For reference, the current docs page: https://angular.dev/reference/configs/workspace-config
The solution of fmalcher also works for Angular 19.