Could not find a declaration file for module 'flowbite/plugin'
Asked Answered
M

3

8

So I am using flowbite and tailwind css for developing my react app. I followed all standard installation procedures as mentioned in their website for setting up flowbite with react, please ref docs here: https://flowbite.com/docs/getting-started/react/

So after following the basic setup process my tailwind file looks like this:

module.exports = {
    content: ['./src/**/*.{js,jsx,ts,tsx}', './node_modules/flowbite/**/*.js'],
    theme: {
        extend: {},
    },
    plugins: [require('flowbite/plugin')],
}
    

the error i keep getting when i require flowbite plugin is:

    > Could not find a declaration file for module 'flowbite/plugin'.
    > 'C:/dev/flowbite-test/node_modules/flowbite/plugin.js' implicitly has
    > an 'any' type.   Try `npm i --save-dev @types/flowbite` if it exists
    > or add a new declaration (.d.ts) file containing `declare module
    > 'flowbite/plugin';`
    

for reference here are my app.js and index.js as well:

import React from 'react';
    import ReactDOM from 'react-dom/client';
    import './index.css';
    import App from './App';
    import reportWebVitals from './reportWebVitals';
    import 'flowbite';

    const root = ReactDOM.createRoot(document.getElementById('root'));
    root.render(
      <React.StrictMode>
        <App />
      </React.StrictMode>
    );

    // If you want to start measuring performance in your app, pass a function

    import logo from './logo.svg';
    import './App.css';

    function App() {
      return (
        <div className="App">
          <button className="block text-white bg-blue-700 hover:bg-blue-800 focus:ring-4 focus:ring-blue-300 font-medium rounded-lg text-sm px-5 py-2.5 text-center dark:bg-blue-600 dark:hover:bg-blue-700 dark:focus:ring-blue-800" type="button" data-modal-toggle="default-modal">
            Toggle modal
          </button>

          <div id="default-modal" aria-hidden="true" className="hidden overflow-y-auto overflow-x-hidden fixed right-0 left-0 top-4 z-50 justify-center items-center h-modal md:h-full md:inset-0">
            <div className="relative px-4 w-full max-w-2xl h-full md:h-auto">

              <div className="relative bg-white rounded-lg shadow dark:bg-gray-700">

                <div className="flex justify-between items-start p-5 rounded-t border-b dark:border-gray-600">
                  <h3 className="text-xl font-semibold text-gray-900 lg:text-2xl dark:text-white">
                    Terms of Service
                  </h3>
                  <button type="button" className="text-gray-400 bg-transparent hover:bg-gray-200 hover:text-gray-900 rounded-lg text-sm p-1.5 ml-auto inline-flex items-center dark:hover:bg-gray-600 dark:hover:text-white" data-modal-toggle="default-modal">
                    <svg className="w-5 h-5" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z" clip-rule="evenodd"></path></svg>
                  </button>
                </div>

                <div className="p-6 space-y-6">
                  <p className="text-base leading-relaxed text-gray-500 dark:text-gray-400">
                    With less than a month to go before the European Union enacts new consumer privacy laws for its citizens, companies around the world are updating their terms of service agreements to comply.
                  </p>
                  <p className="text-base leading-relaxed text-gray-500 dark:text-gray-400">
                    The European Union’s General Data Protection Regulation (G.D.P.R.) goes into effect on May 25 and is meant to ensure a common set of data rights in the European Union. It requires organizations to notify users as soon as possible of high-risk data breaches that could personally affect them.
                  </p>
                </div>

                <div className="flex items-center p-6 space-x-2 rounded-b border-t border-gray-200 dark:border-gray-600">
                  <button data-modal-toggle="default-modal" type="button" className="text-white bg-blue-700 hover:bg-blue-800 focus:ring-4 focus:ring-blue-300 font-medium rounded-lg text-sm px-5 py-2.5 text-center dark:bg-blue-600 dark:hover:bg-blue-700 dark:focus:ring-blue-800">I accept</button>
                  <button data-modal-toggle="default-modal" type="button" className="text-gray-500 bg-white hover:bg-gray-100 focus:ring-4 focus:ring-gray-300 rounded-lg border border-gray-200 text-sm font-medium px-5 py-2.5 hover:text-gray-900 focus:z-10 dark:bg-gray-700 dark:text-gray-300 dark:border-gray-500 dark:hover:text-white dark:hover:bg-gray-600">Decline</button>
                </div>
              </div>
            </div>
          </div>
        </div>
      );
    }

    export default App;

I saw a few posts on adding a few lines to the package.json file as well which i tried with no luck, my package.json file here:

{
  "name": "flowbite-test",
  "version": "0.1.0",
  "private": true,
  "typings": "dist/src/index",
  "main": "dist/index",
  "dependencies": {
    "@testing-library/jest-dom": "^5.16.4",
    "@testing-library/react": "^13.2.0",
    "@testing-library/user-event": "^13.5.0",
    "flowbite": "^1.4.5",
    "react": "^18.1.0",
    "react-dom": "^18.1.0",
    "react-scripts": "5.0.1",
    "web-vitals": "^2.1.4"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
  },
  "eslintConfig": {
    "extends": [
      "react-app",
      "react-app/jest"
    ]
  },
  "browserslist": {
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version"
    ]
  },
  "devDependencies": {
    "autoprefixer": "^10.4.7",
    "postcss": "^8.4.13",
    "tailwindcss": "^3.0.24"
  }
}

Can someone please help me with this, because of this i am not able to use the accordions, modals and carousels interactivity in react

Martguerita answered 8/5, 2022 at 9:16 Comment(1)
Did you manage to solve this? If so, how did you do it?Gills
L
2

I was able to resolve this by doing 2 things:

  1. Create a global.d.ts with:
declare module "flowbite/plugin";
  1. Add to tsconfig.json:
  "include": ["src/**/*.ts*"],

After this, I no longer seen the Could not find a declaration file for module 'flowbite/plugin'

Luralurch answered 7/2, 2023 at 5:51 Comment(1)
Any explanation with this? How does it work?Antilog
O
0

Try to create .d.ts file (index.d.ts) in your root directory and inside declare your module

declare module 'flowbite/plugin';

Ref : https://github.com/tailwindlabs/tailwindcss-forms/issues/18#issuecomment-735448249

Ovipositor answered 11/10, 2022 at 7:3 Comment(1)
I tried this, but still the theme doesen't apply.Armand
L
-2

try applying this change

plugins: [require("/node_modules/flowbite/plugin.js")],
Lungwort answered 14/8, 2022 at 21:5 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.