N
Nuxt3w ago
∂Max

Trouble bundling module

Hi! I'm trying to bundle my nuxt module but when I use it in another project I get
The requested module 'http://localhost:3000/_nuxt/@fs/home/me/my-project/node_modules/is-buffer/index.js?v=9453f87c' doesn't provide an export named: 'default'
The requested module 'http://localhost:3000/_nuxt/@fs/home/me/my-project/node_modules/is-buffer/index.js?v=9453f87c' doesn't provide an export named: 'default'
is-buffer is being used by unifiedjs. But @nuxt/content uses it too but doesn't seem to have this problem.
3 Replies
kapa.ai
kapa.ai3w ago
Hi @∂Max. I'm kapa.ai, your friendly support bot. I will try to answer your question by searching through the knowledge base. :wave: ---------------------- Based on the information provided in the knowledge sources, I don't have enough specific details to fully address your particular issue with bundling your Nuxt module. However, I can provide some general insights and suggestions related to ESM compatibility in Nuxt, which might be relevant to your problem. The error you're encountering suggests an issue with ES Module (ESM) compatibility. This is a common challenge when working with Nuxt and third-party dependencies. Here are some points to consider: 1. ESM Compatibility: Nuxt uses native ES modules, which can sometimes cause issues with CommonJS modules. The error you're seeing indicates that the module is being imported as an ES module, but it doesn't have a default export. This is often seen when CommonJS modules are imported in an ESM context. 2. Transpiling Libraries: You might need to transpile the problematic library. As mentioned in the Nuxt documentation on ESM, you can add the library to the build.transpile array in your nuxt.config.ts:
export default defineNuxtConfig({
build: {
transpile: ['is-buffer']
}
})

export default defineNuxtConfig({
build: {
transpile: ['is-buffer']
}
})

3. Aliasing Libraries: In some cases, you might need to manually alias the library to its CommonJS version. The Nuxt docs provide this example:
export default defineNuxtConfig({
alias: {
'is-buffer': 'is-buffer/index.js'
}
})

export default defineNuxtConfig({
alias: {
'is-buffer': 'is-buffer/index.js'
}
})

4. Default Exports: The Nuxt documentation also mentions issues with default exports in CommonJS modules. You might need to use a helper like interopDefault from the mlly package to handle this:
import { interopDefault } from 'mlly'
import myModule from 'my-module'
console.log(interopDefault(myModule))

import { interopDefault } from 'mlly'
import myModule from 'my-module'
console.log(interopDefault(myModule))

5. Module Author Guide: If you're developing a module, you might want to review the Library Author Guide in the Nuxt documentation. It provides recommendations for making your module ESM-compatible, such as renaming ESM files to end with .mjs. Given that @nuxt/content doesn't seem to have this issue, you might want to examine how they handle their dependencies and structure their module. If these suggestions don't resolve your issue, you might want to create a minimal reproduction of the problem and seek further assistance from the Nuxt community. The Nuxt documentation on reporting bugs provides guidance on how to do this effectively. ---------------------- Note: you can ask me a follow up question by @ mentioning me again :speech_balloon: ----------------------
kapa.ai
kapa.ai3w ago
<@474213585355276298> Kapa.ai is still learning and improving, please let me know how I did by reacting below.
∂Max
∂MaxOP3w ago
Transpiling is-buffer didn't seem to have any affect. Aliases would just bypass the issue but give another, similar, one I hope someone can help me, I've been struggling for several hours now. I can give access to the source code if needed Alright, I'll try to do that! Thanks

Did you find this page helpful?