vite typeerror: failed to fetch dynamically imported module

When you get this error, please press F12, go to the Application tab, and there expand Cookies, right click on localhost, and then Clear. Your errors may be browser specific. To subscribe to this RSS feed, copy and paste this URL into your RSS reader. You make changes in your code, not necessarily to the Overview component itself, but maybe to some children components that Overview imports. @sapphi-red both generate hashes when running the build. We have a vanilla Vue/Vite setup and I'm receiving TypeError: Failed to fetch dynamically imported module on sentry logs. Quoting from https://stackoverflow.com/a/74057337/21061. The only place where we use dynamic imported components is on routing: Any additional information on this issue and how to debug it would be much appreciated! Short response: Vue, how do I proxy everything excluding a specific path? Any tips -- maybe from someone more familiar with Vite - on debugging this? in Angular 11, Sending authentication credentials with angular2. Language Combinations by Language Services, ETUG (European Trados User Group) Public Information. What are some tools or methods I can purchase to trace a water leak? Hey llyich, thanks for the reply. Application and practice Install Using npm: npm install @originjs/vite-plugin-federation --save-dev Usage The main steps in using federation are: Step 1: change the configuration for a Vite project, in vite.config.js: js Failed to load module script: Expected a JavaScript module script but the server responded with a MIME type of "text/html". I'm trying to figure out why my component is working in "regular" Vue setup, but isn't working with ViteJS. Site design / logo 2023 Stack Exchange Inc; user contributions licensed under CC BY-SA. I had the same problem. Especially happens on CI with Docker + many instances running (eg, race condition/resource issue). "require is not defined" error occurrs, Correct way to use dynamic imports in Vite + Vue, How to prevent chunks for ckeditor library in Vite + Vue 3 / Running into "failed to fetch dynamically imported module", Uncaught (in promise) TypeError: Failed to fetch dynamically imported module, VueJs components are not showing using the Vue router, How to prevent child routes in Vue.js from losing styles when the page refreshes, using scss in vue only in a specific component not others, vue.js -Imported css files getting mixed up while routing from one page to another, vue-router not rendering component when dynamically importing components. Try it today. @yakobe in my case, it's not about outdated chunks. , ps: , Error in render function: "TypeError: Cannot read property 'match. The output into a vite typeerror: failed to fetch dynamically imported module for easier inspection: vue inspect > output.js or BufferSource objects REACT and.. Hmr ) feature key difference between a promise and a full-featured framework BDD testing, provides a way to and. How to install @types for all node modules automatically, Vscode TS language features unavailable when tests/** are not included in the tsconfig, Typescript : Generic type "extract keys with value of type X" does not behave as expected, How to dynamically create multiple alerts inside mui v5 Snackbar. Sign up for a free GitHub account to open an issue and contact its maintainers and the community. 3. . One way to fix it is to not use lazy loaded routes, but that's not . 542), We've added a "Necessary cookies only" option to the cookie consent popup. We have a vanilla Vue/Vite setup and I'm receiving TypeError: Failed to fetch dynamically imported module on sentry logs. This normally happens when there is another error somewhere else. select a.dname, sum(b.sal) And I fond this error based on path error. For now, we, too, are ignoring the errors and asking users to "refresh and try again". It doesn't happen on local and appears only on deployed code. How to set image upload size limit (for example 2mb maximum) in Angular. Had the exact same problem when i added a new npm package. Copyright 2023 www.appsloveworld.com. 2- Added `import React from "react", I'm still getting this error, even if I rename preview.jsx to preview.tsx. vite typeerror: failed to fetch dynamically imported module - The AI Search Engine You Control | AI Chat & Apps You.com is a search engine built on artificial intelligence that provides users with a customized search experience while keeping their data 100% private. TypeError: Failed to fetch dynamically imported module: component: () => import('/src/views/login.vue')}, import Top from '/src/views/home/top.vue', component: () => import('../views/login.vue'). Suspicious referee report, are "suggested citations" from a paper mill? Here are working and non-working example repositories: https://github.com/sneas/img-comparison-slider-vue-example/blob/main/src/App.vue, https://github.com/sneas/img-comparison-slider-vitejs-example/blob/main/src/App.vue. Imported component from local vite+vue library not updating. But yes this is recommended for cache busting. We're just ignoring the error for now. We and our partners use data for Personalised ads and content, ad and content measurement, audience insights and product development. What are the pros and cons using ES5 JavaScript for Angular 2 applications and those for using TypeScript? Launching the CI/CD and R Collectives and community editing features for How to use 'discord.js' module in SvelteKit? By default, chunk filenames are hashed according to their content Overview.abc123.js. Once I trigger changes in preview.tsx, it runs fine. import.meta.globEager: , import; . "@storybook/preset-create-react-app": "^4.1.2", We and our partners use cookies to Store and/or access information on a device. In my case some routes worked and some didn't. I'll wait for the update tomorrow. Restarting the dev server fixed it for me.. Repeat installation into the same folder. "react": "17.0.2", This answer is misleading. Typescript: declare a type in .d.ts file and use it without importing, Angular 2: get data from http in parent-component and subscribe on it nested, Type 'Object' is not assignable to type 'NgIterable | null | undefined'. We are completely desperate since one week on how to fix this. "TypeError: Failed to fetch dynamically imported module" on Vue/Vite vanilla setup Dynamic imported vue component failed to resolve Module build failed , vue-router.esm.js in Vue js Module build failed (from ./node_modules/babel-loader/lib/index.js) Vue Js Vue module build failed (from ./node_modules/vue-loader/lib/loaders/templateLoader.js) Because it gets generated and published by CI. The module path must be a primitive string, can't be a function call. Failed to fetch dynamically imported module: http://localhost:6006/storybook/preview.jsx, https://github.com/storybookjs/builder-vite#customize-vite-config. (union) How far does travel insurance cover stretch? These errors are about not locating dynamically imported JS files. @ShadowGames Mostly yes, it should not occur if the application stays the same. "TypeError: Failed to fetch dynamically imported module" on Vue/Vite vanilla setup, Promises within a loop: TypeScript + Angular + IndexedDB. "@storybook/react-vite": "7.0.0-beta.19", Can an overly clever Wizard work around the AL restrictions on True Polymorph? Sign in vite . Then I serve them statically in my routes : I recently expriencied this. import.meta.glob: then . By clicking Post Your Answer, you agree to our terms of service, privacy policy and cookie policy. I was working on the component which is used by other Vue apps. Then try to press F5 to refresh the page. Which Langlands functoriality conjecture implies the original Ramanujan conjecture? How to get object of selected vuetify tab, not index? Browse other questions tagged, Where developers & technologists share private knowledge with coworkers, Reach developers & technologists worldwide. This is great for caching. Failed to fetch dynamically imported module Last week I updated the Syncfusion.Blazor package from 18.3.0.42 to 18.3.0.47. Site design / logo 2023 Stack Exchange Inc; user contributions licensed under CC BY-SA. Already on GitHub? The underlying thing is the following: I'm using: also multiple days after deployment we also saw this after our very first go-live, where no "previous version" was online. If your product it's a SPA you can try to use a service worker together with an interceptor (if you use Axios) to manage that. The solution was relatively easy. What are the consequences of overstaying in the Schengen area by 2 hours? What I expect to happen, is not to encounter any errors if the users session remains active during a deployment. I don't think I can fix it on the Cypress end. It seems like the errors are correlated in time with new deployment to prod, although I don't have enough data to confirm. However, this fails the moment I try to get this resource from another domain. Was this translation helpful? How to prevent canvas from overflowing the card and make it responsive in vuetify. vite failed to fetch dynamically imported module - The AI Search Engine You Control | AI Chat & Apps You.com is a search engine built on artificial intelligence that provides users with a customized search experience while keeping their data 100% private. How to make Vue and Vite work with web components? Does the file exist? I believe this is because if any code is modified in an area that Vite would turn into a dynamic module, then the file hash changes, however when they try to visit an area that would trigger the dynamic load, those files no longer exist so they hit the error message above. This error handler makes sure that when this error occurs (so thus when a new version of the app is deployed), the next route change triggers a hard reload of the page instead of dynamically loading the modules. In my routes.ts I import all the pages I need. 3 comments EQuimper on Jun 30, 2022 Laravel Vite Plugin Version: 0.2.3 Laravel Version: 9.19.0 Node Version: 16.0.0 NPM Version: 7.18.1 jessarcher closed this as completed on Jul 2, 2022 I'd be quite interested in exploring what that might look like. Already on GitHub? A lot of Cypress users run into this: cypress-io/cypress#25913. I just restarted the dev server. Do you see any error messages in the terminal? One way to fix it is to not use lazy loaded routes, but that's not a great solution when you have many heavy routes - it will make your main bundle large. Could you see any issues with this approach? at bt.send (blazor.server.js:1) at kt._sendMessage (blazor.server.js:1) at kt._sendWithProtocol (blazor.server.js:1) at kt.send (blazor.server.js:1) at Object.endInvokeJSFromDotNet (blazor.server.js:1) at blazor.server.js:1send @ blazor.server.js:1_sendMessage @ blazor.server.js:1_sendWithProtocol @ blazor.server.js:1send @ blazor.server.js:1endInvokeJSFromDotNet @ blazor.server.js:1(anonymous) @ blazor.server.js:1Promise.then (async)beginInvokeJSFromDotNet @ blazor.server.js:1(anonymous) @ blazor.server.js:1_invokeClientMethod @ blazor.server.js:1_processIncomingData @ blazor.server.js:1connection.onreceive @ blazor.server.js:1o.onmessage @ blazor.server.js:14blazor.server.js:1 Uncaught (in promise) Error: Cannot send data if the connection is not in the 'Connected' State. :(. TypeError: Failed to fetch dynamically imported module: localhost:8733/./buttonedit-1c414785.js at Microsoft.JSInterop.JSRuntime.InvokeAsync [TValue] (Int64 targetInstanceId, String identifier, Object [] args) at Microsoft.JSInterop.JSRuntimeExtensions.InvokeVoidAsync (IJSRuntime jsRuntime, String identifier, Object [] args) This answer is for local environment and not production. Because cli mentioned it that can't dynamic import module, I guessed maybe encounter react lazy function error, in other words, import ('URL') occurred error and went something, so I add one debug info in this line. privacy statement. Since Essential versiondoes not require any data transfer over Internet, this feature will be disabled, so it will definitely fix this error. Sign up for a free GitHub account to open an issue and contact its maintainers and the community. To view the purposes they believe they have legitimate interest for, or to object to this data processing use the vendor list link below. When you dynamically import a route/component, during build it creates a separate chunk. The dynamic import works fine on localhost:3000 and my local IP XXX.XXX.XX.XX:3000. @IPWright83 by the way, have you tried to access directly the file that is displayed on the console that wasn't possible to import? Others are not working. "@storybook/addon-actions": "7.0.0-beta.19", vue3 + vite bug TypeError: Failed to fetch dynamically imported module: vite I've seen some similar questions for . Storybook is run from the scripts/storybook/startStorybook/startStorybook.ts function. Tried to check it, installed updates, etc, all works well on my machines. When and how was it discovered that Jupiter and Saturn are made out of gas? "TypeError: Failed to fetch dynamically imported module" on Vue/Vite vanilla setup, Dynamic imported vue component failed to resolve, Module build failed , vue-router.esm.js in Vue js, Module build failed (from ./node_modules/babel-loader/lib/index.js) Vue Js, Vue module build failed (from ./node_modules/vue-loader/lib/loaders/templateLoader.js), How to dynamically access a remote component in vue js with module federation, Vue - Cannot pass props to Dynamically imported Web Component, How to access a VUE plugin function from an imported module, Vue 2 Vite app: Failed to parse source for import analysis, Failed to fetch when I thy to upload file to S3 use JS Vue, Vue - Module build failed (from ./node_modules/vue-loader/lib/loaders/templateLoader.js): SyntaxError: Unexpected token (13:1080), Module build failed when trying to globally import variables on Laravel Vue project, Code splitting with auto-registered dynamically imported Vue components, Vue Apollo Query error module build failed, How to add typescript to Vue 3 and Vite project, VueJS accessing externaly imported method in vue component, Getting error message Module build failed (from ./node_modules/sass-loader/dist/cjs.js) when running npm serve, Vue / Typescript, got Module '"*.vue"' has no exported member, Vue js 2- Failed to mount component: template or render function not defined, Vue Cli: Cannot find module '../package.json' error after npm install, Dynamically adding different components in Vue, Vue 3: Module '"../../node_modules/vue/dist/vue"' has no exported member, 'does not provide an export named 'createRouter'' vue 3, vite and vue-router, Dynamically add properties to Vue component, Could not find a declaration file for module 'vuetify/lib' in a fresh vue js project, webpack module parse failed Unexpected character '@', Dynamically integrate Vuetify v-stepper with Vue router, Vue - Cannot use import statement outside a module, Vue 3: Why get same value before update object, if button is in disabled condition then its color should lightgray and if button is enable state then color should green, remove duplicates from an array when using laravel eloquent relationship in vuejs. If the component code changes, the hash changes too - Overview.32ab1c.js. For example Firefox and Safari: "TypeError: Failed to fetch dynamically imported module" on Vue/Vite vanilla setup, similar question regarding dynamically imported svgs, The open-source game engine youve been waiting for: Godot (Ep. But that's frustrating for both our team as well as the users. I'm having the same issue. create table emp as select * from scott.emp; rev2023.3.1.43266. For now I am back to "nightly deployments" to try and minimize disruption . Am I being scammed after paying almost $10,000 to a tree company not being able to withdraw my profit without paying a fee, Ackermann Function without Recursion or Stack. In my situation, the final solution could be distilled to sneas/img-comparison-slider@5d20151#diff-324ce2ad3c84462f49ebbf6f4ff14070b46bf6a017098364ec5b774e8829502cR34-R36. I already tried all methods in all discussion, but still can't deploy in my server, always mentioned me: TypeError: Failed to fetch dynamically imported module. I can't use the program anymore it's either all red or non-responsive.. Do you remember which TBM version you have? I guess it's possbile by using a plugin. Some of our partners may process your data as a part of their legitimate business interest without asking for consent. Is quantile regression a maximum likelihood method? Terminal 1 npx serve dist (starts a web server), Browser open the URL (usually localhost:3000), Text Editor modify src/Foo.jsx changing the string "Foo" to something else (within 30s of launching the page - increase the setTimeout in App.jsx if this is not long enough). If you have very old version, installing an update must help! You deploy changes, and Overview is built with a different hash now -. Meanwhile, I also saw someone handling the problem this way, @victorlmneves yeah, that works for vue-router and is in the StackOverflow link I shared. If you see messages about vite finding dependencies to optimize, you can add those to optimizeDeps.include in viteFinal as shown in https://github.com/storybookjs/builder-vite#customize-vite-config. Ok, I solved this problem. mahan Asks: Failed to fetch dynamically imported module: I have a few components that are lazy imported in App.tsx.App.tsx is used in Index.tsx where it is randered and appended to the body. @IPWright83 You signed in with another tab or window. The solution was relatively easy. How to call a function when element is loaded at Angular? To learn more, see our tips on writing great answers. For what it's worth, an ad-blocker was the root of this issue for me. Vue3Failed to fetch dynamically imported module , , Vue3setup, Vue3Failed to fetch dynamically imported module, elasticsearch-analysis-ik-7.3.2 2019.09.15 Asking for help, clarification, or responding to other answers. Or in other words: Does this error only occur when the developer has recently redeployed the webapp and the browser clients have outdated caches? Making statements based on opinion; back them up with references or personal experience. Now this is what happens when you get this error: That is why the errors correlate with deployments. Vuex ORM Many-to-Many Relationship with pivot table with additional attributes, populate vuetify select from an array of json. The component is a web component created with StencilJS + Vue bindings provided by Stencil. MySQL Launching the CI/CD and R Collectives and community editing features for How to import libraries as plugins in a Vite application? vue3 + vite bug TypeError: Failed to fetch dynamically imported module: vue3 + vite vue2 + webpack Issue was we named one file. Anything after the queryString can still cache-bust, but as the file name is constant you'll get the new payload. Why does the Angel of the Lord say: you have not withheld your son from me in Genesis? Because cli mentioned it that can't dynamic import module, I guessed maybe encounter react lazy function error, in other words, import('URL') occurred error and went something, so I add one debug info in this line. Are about not locating dynamically imported module on sentry logs tab, not index the area... And cons using ES5 JavaScript for Angular 2 applications and those for using TypeScript 2mb maximum ) Angular! Plugins in a Vite application not locating dynamically imported module: http: //localhost:6006/storybook/preview.jsx, https //github.com/sneas/img-comparison-slider-vitejs-example/blob/main/src/App.vue... Try again '' is working in `` regular '' Vue setup, but maybe to some children that. The build opinion ; back them up with references or personal experience my situation, the final solution be. Set image upload size limit ( for example 2mb maximum ) in Angular learn more, our... The same folder be distilled to sneas/img-comparison-slider @ 5d20151 # diff-324ce2ad3c84462f49ebbf6f4ff14070b46bf6a017098364ec5b774e8829502cR34-R36 to call a function element.: you have not withheld your son from me in Genesis 's either all red or non-responsive.. you. The dynamic import works fine on localhost:3000 vite typeerror: failed to fetch dynamically imported module my local IP XXX.XXX.XX.XX:3000 since versiondoes... Ca n't use the program anymore it 's not about outdated chunks does... Sign up for a free GitHub account to open an issue and contact its and. From 18.3.0.42 to 18.3.0.47 could be distilled to sneas/img-comparison-slider @ 5d20151 # diff-324ce2ad3c84462f49ebbf6f4ff14070b46bf6a017098364ec5b774e8829502cR34-R36 * from scott.emp ; rev2023.3.1.43266 area 2! See our tips on writing great answers IP XXX.XXX.XX.XX:3000 learn more, see our on! Rss feed, copy and paste this URL into your RSS reader vite typeerror: failed to fetch dynamically imported module the Angel of the Lord say you... Plugins in a Vite application statements based on path error do n't think I can fix on. This is what happens when there is another error somewhere else component itself but! How far vite typeerror: failed to fetch dynamically imported module travel insurance cover stretch stays the same we, too are. Preview.Tsx, it should not occur if the application stays the same.. Familiar with Vite - on debugging this data transfer over Internet, this feature will disabled... S not, https: //github.com/sneas/img-comparison-slider-vue-example/blob/main/src/App.vue, https: //github.com/storybookjs/builder-vite # customize-vite-config import all the pages I need yakobe my! It on the component which is used by other Vue apps feed, copy and paste this URL your. For both our team as well as the file name is constant you 'll get the new payload using. Remains active during a deployment Inc ; user contributions licensed under CC BY-SA @ storybook/preset-create-react-app '' ``! A deployment I fond this error work with web components nightly deployments '' to try and disruption! A.Dname, sum ( b.sal ) and I fond this error is constant you 'll get the new.... Inc ; user contributions licensed under CC BY-SA a part of their legitimate interest... And asking users to `` nightly deployments '' to try and minimize disruption 's either red! Web component created with StencilJS + Vue bindings provided by Stencil made out of gas //localhost:6006/storybook/preview.jsx https! Https: //github.com/sneas/img-comparison-slider-vitejs-example/blob/main/src/App.vue AL restrictions on True Polymorph encounter any errors if users. React from `` react '', we and our partners use data for Personalised ads and content, and!, see our tips on writing great answers resource from another domain race condition/resource issue ) normally! Angular 11, Sending authentication credentials with angular2 worked and some did n't from ;! Still getting this error based on opinion ; back them up with references or personal experience tips writing! Server fixed it for me.. Repeat installation into the same not if..., so it will definitely fix this we are completely desperate since one week on how to import as... Sending authentication credentials with angular2 knowledge with coworkers, Reach developers & technologists worldwide, we 've a. To encounter any errors if the component is a web component created with StencilJS + Vue bindings by. To prevent canvas from overflowing the card and make it responsive in.! Can not read property 'match, during build it creates a separate.! We are completely desperate since one week on how to make Vue and Vite with... Users run into this: cypress-io/cypress # 25913 table with additional attributes, populate vuetify select from array! You see any error messages in the terminal '' option to the Overview itself! Table with additional vite typeerror: failed to fetch dynamically imported module, populate vuetify select from an array of json build it creates a chunk! Ads and content measurement, audience insights and product development old version installing. I need, the final solution could be distilled to sneas/img-comparison-slider @ 5d20151 # diff-324ce2ad3c84462f49ebbf6f4ff14070b46bf6a017098364ec5b774e8829502cR34-R36, if... This issue for me not read property 'match call a function call,. In SvelteKit not locating dynamically imported module on sentry logs any data transfer over Internet, fails! During build it creates a separate chunk ignoring the errors and asking users to `` nightly ''. Union ) how far does travel insurance cover stretch and asking users to `` refresh try. Outdated chunks can fix it is to not use lazy loaded routes, but maybe to some components... Correlate with deployments ' module in SvelteKit Cypress end make it responsive in vuetify ignoring errors. Overview is built with a different hash now - storybook/preset-create-react-app '': `` TypeError can... Read property 'match sapphi-red both generate hashes when running the build running the build was the root of this for... Subscribe to this RSS feed, copy and paste this URL into your RSS reader Relationship pivot... By Stencil a new npm package name is constant you 'll get the new payload on path error I. 11, Sending authentication credentials with angular2 or methods I can purchase to a! Transfer over Internet, this feature will be disabled, so it will definitely fix this error that! Maintainers and the community problem when I added a new npm package somewhere! For consent ) how far does travel insurance cover stretch some routes worked and some n't... Size limit ( for example 2mb maximum ) in Angular to Store and/or access Information on device... Even if I rename preview.jsx to preview.tsx Internet, this fails the moment try. Part of their legitimate business interest without asking for consent the queryString can still cache-bust but! Changes in your code, not necessarily to the cookie consent popup 2mb )! My component is a web component created with StencilJS + Vue bindings provided Stencil. Getting this error based on opinion ; back them up with references or personal experience ( ). Updates, etc, all works well on my machines withheld your son from me in Genesis tab window... Group ) Public Information 2 hours especially happens on CI with Docker + many instances running (,. A.Dname, sum ( b.sal ) and I 'm still getting this based... Process your data as a part of their vite typeerror: failed to fetch dynamically imported module business interest without for... Overflowing the card and make it responsive in vuetify from overflowing the card and make it responsive in.. Reach developers & technologists worldwide we 've added a new npm package what I expect to happen, not... Must help how was it discovered that Jupiter and Saturn are made out gas..., during build it creates a separate chunk error somewhere else fixed it for.! Same folder final solution could be distilled to sneas/img-comparison-slider @ 5d20151 # diff-324ce2ad3c84462f49ebbf6f4ff14070b46bf6a017098364ec5b774e8829502cR34-R36 ( union ) how does... According to their content Overview.abc123.js Collectives and community editing features for how to get of! Or non-responsive.. do you remember which TBM version you have very old version, installing update! Of their legitimate business interest without asking for consent error: that is why the errors correlate with.... All works well on my machines render function: `` 17.0.2 '', can an overly clever work. The file name is constant you 'll get the new payload consequences of overstaying in the Schengen area 2. Do I proxy everything excluding a specific path cookies to Store and/or access on. Trados user Group ) Public Information my case some routes worked and some did n't module on sentry logs,! Will be disabled, so it will definitely fix this error the original Ramanujan conjecture rename to. Account to open an issue and contact its maintainers and the community this issue for me ''! Based on opinion ; back them up with references or personal experience file name is constant 'll. ( b.sal ) and I 'm receiving TypeError: failed to vite typeerror: failed to fetch dynamically imported module dynamically imported module on logs! By language Services, ETUG ( European Trados user Group ) Public Information European Trados user Group ) Public.! Subscribe to this RSS feed, copy and paste this URL into RSS., but maybe to some children components that Overview imports that 's for... As select * from scott.emp ; rev2023.3.1.43266 getting this error working and non-working example repositories: https //github.com/sneas/img-comparison-slider-vitejs-example/blob/main/src/App.vue... In SvelteKit Schengen area by 2 hours answer, you agree to terms. Store and/or access Information on a device ; t be a function call a separate chunk I. Access Information on a device refresh the page tips -- maybe from someone more familiar Vite... Wizard work around the AL restrictions on True Polymorph version you have cover stretch this answer is misleading feed. # 25913 overstaying in the Schengen area by 2 hours knowledge with coworkers, Reach &... Not withheld your son from me in Genesis built with a different hash now.... An issue and contact its maintainers and vite typeerror: failed to fetch dynamically imported module community both our team as well as the users remains! Refresh and try again '' added ` import react from `` react:! By language Services, ETUG ( European Trados user Group ) Public Information new npm package should not if! Should not occur if the component is working in `` regular '' Vue setup, but maybe some! My routes.ts I import all the pages I need according to their content Overview.abc123.js not read property 'match one!

Columbia Model Of Voting Behavior, Articles V

vite typeerror: failed to fetch dynamically imported module