meilisearch / meilisearch-js

JavaScript client for the Meilisearch API
https://www.meilisearch.com
MIT License
703 stars 85 forks source link

Module "crypto" has been externalized for browser compatibility on v0.39 upgrade #1649

Closed brunoocasali closed 1 month ago

brunoocasali commented 1 month ago

Issue:

While upgrading to v0.39.0 you may see this error:

[plugin:vite:resolve] Module "crypto" has been externalized for browser compatibility, imported by ".../meilisearch-js-plugins/node_modules/meilisearch/dist/bundles/meilisearch.esm.js". See http://vitejs.dev/guide/troubleshooting.html#module-externalized-for-browser-compatibility for more details.

It means you're probably using the Vue 3 and Vite like our instant-meilisearch playground.

Solution:

To fix this warning and to be able to build your app just add this to the config file:

export default defineConfig({
  plugins: [vue()],
  build: {
    rollupOptions: {
      external: ['crypto'], // this is the important part
    },
  },
})

Otherwise, you'll face errors like Module "crypto" has been externalized for browser compatibility.

Original error: https://github.com/meilisearch/meilisearch-js-plugins/actions/runs/8970098117/job/24632854404?pr=1294

brunoocasali commented 1 month ago

That was my attempt to fix the error, and it works https://github.com/meilisearch/meilisearch-js-plugins/pull/1294.

If you think this is a mistake, here is the original PR https://github.com/meilisearch/meilisearch-js/pull/1616 that introduced this new requirement. We may want to revert it if the workaround I provided is not correct or brings too many drawbacks.