[๐] Qwik doesn't work with NX monorepo
mhuretski opened this issue ยท 3 comments
Which component is affected?
Qwik Runtime
Describe the bug
qwik 1.8.0 doesnt work with NX monorepo
Reproduction
https://github.com/mhuretski/qwik-monorepo
Steps to reproduce
- create project
pnpm dlx create-nx-workspace@latest org-workspace --preset=qwik-nx
- update qwik to
1.8.0
- run project
npx nx run PROJECT_NAME:serve
where PROJECT_NAME - name of the created project
(in attached reponpx nx run test:serve
)
TypeError: Cannot read properties of undefined (reading 'push')
at /Users/user/nx-test/node_modules/.pnpm/qwik-nx@2.3.0_@nx+devkit@19.5.7_nx@19.5.7_@swc-node+register@1.9.2_@swc+core@1.5.29_@swc+help_ptvdyo345eoikgktw5n5db5a2i/node_modules/qwik-nx/src/plugins/qwik-nx-vite.plugin.js:36:47
at Generator.next (<anonymous>)
at fulfilled (/Users/user/nx-test/node_modules/.pnpm/tslib@2.6.3/node_modules/tslib/tslib.js:166:62)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
System Info
"dependencies": {
"qwik-nx": "2.3.0"
},
"devDependencies": {
"@builder.io/qwik": "1.8.0",
"@builder.io/qwik-city": "1.8.0",
Additional Information
If Qwik is downgraded to 1.7.3
everything works just fine.
This has to do with qwik-nx. cc @shairez @dmitry-stepanenko.
Removing the qwikNxVite plugin "solves" the problem for the time being.
Code in question that's throwing here:
for (const qwikPlugin of qwikPlugins) {
// it's not expected to have the plugin duplicated, but handling it as an edge case
const pluginOptions = qwikPlugin.api.getOptions();
console.log(pluginOptions);
console.log(qwikPlugin);
const vendorRoots = yield (0, get_vendor_roots_1.getVendorRoots)(options, pluginOptions);
pluginOptions.vendorRoots.push(...vendorRoots);
}
pluginOptions doesn't have a vendorRoots array. I don't know if the solution is to default to an empty array or if none of this makes sense anymore?
pluginOptions.vendorRoots = (pluginOptions.vendorRoots ?? []).push(...vendorRoots);
I saw a load of pathing improvements added recently by wmorten relating to nx projects etc, is the qwikNx plugin still required? I feel like I have storybook issues without it but I'm not sure it's all related. My nx project is a little sensitive to package updates and sometimes wish I just used qwik CLI on it's own but think it doesn't support multiple apps/libs?
From what we've seen, you can simply remove the qwikNxVite plugin from now on, qwik natively supports monorepos. @dmitry-stepanenko is working on a release.