Ed.
Ed.

Reputation: 6222

Error: Cannot find module 'webpack'

I'm just getting started with webpack and am having difficulty getting the multiple-entry-points sample to build. The webpack.config.js file in the example includes the line

 var CommonsChunkPlugin = require("../../lib/optimize/CommonsChunkPlugin");

which fails for me with the error

Error: Cannot find module '../../lib/optimize/CommonsChunkPlugin'

Searching around, I found other examples of using the CommonsChunkPlugin with the expression

var commonsPlugin = new webpack.optimize.CommonsChunkPlugin("common.js");

which fails with the error

ReferenceError: webpack is not defined

Some more searching found a number of examples including

var webpack = require('webpack');

and my build now fails with

Error: Cannot find module 'webpack'

I'm at a loss as to how to proceed.

Upvotes: 241

Views: 510721

Answers (24)

Sabin Bogati
Sabin Bogati

Reputation: 741

I resolved this issue simply running this command:

npm install webpack --save-dev

Upvotes: 1

troy
troy

Reputation: 2515

I solved the same problem by reinstalling, execute these commands

rm -rf node_modules
rm -f package-lock.json
npm install

rm is always a dangerous command, especially with -f, please notice that before executing it!!!!!

Upvotes: 104

Ahmed El-Beltagy
Ahmed El-Beltagy

Reputation: 99

rm -rf node_modules
rm -rf package.json-lock
npm install --force or npm install --legacy-peer-deps

Upvotes: 2

Paulo Guilherme
Paulo Guilherme

Reputation: 21

What solved it for me was that the path to webpack.config was wrong in build.js

Upvotes: 0

Patrick Aleman
Patrick Aleman

Reputation: 619

So there are quite few possible issues, in my case on windows:

I moved my project to a folder with an & in the name, which is fine for windows but it break npm. My solution was to remove the & from the name.

test&mocking -> test_and_mocking

Upvotes: 0

Hefaz
Hefaz

Reputation: 671

Laravel Users

If none of the above options work for you, then you probably need to install Laravel-mix correctly. Here is how:

npm install laravel-mix --save-dev

Now create a webpack.mix.js file using this command:

touch webpack.mix.js

Add this code into your webpack.mix.js file:

mix.js('resources/js/app.js', 'public/js').postCss('resources/css/app.css', 'public/css', [
    require('postcss-import'),
    require('tailwindcss'),
    require('autoprefixer'),
]);

You probably will also need to create a tailwind.config.js file using the command touch tailwind.config.js and then add this code ainto it:


module.exports = {
    content: [
        './vendor/laravel/framework/src/Illuminate/Pagination/resources/views/*.blade.php',
        './storage/framework/views/*.php',
        './resources/views/**/*.blade.php',
    ],

    theme: {
        extend: {
            fontFamily: {
                sans: ['Nunito', ...defaultTheme.fontFamily.sans],
            },
        },
    },

    plugins: [require('@tailwindcss/forms')],
};

Finally run npm run dev

Upvotes: 0

Francesco Borzi
Francesco Borzi

Reputation: 61724

While the suggested solution (npm link webpack) worked locally, on my CI (GitHub actions) I had the same problem, and to resolve it I used:

 npm i --save-dev webpack

Upvotes: 0

Panda
Panda

Reputation: 89

In my case helped me changing the parent folder name and remove some & from this name, you can also try changing the name or folder where you keep your code.

Upvotes: 1

Ruslanas Balčiūnas
Ruslanas Balčiūnas

Reputation: 7418

Link globally installed package to your project:

npm link webpack

Checkout the official documentation of yarn link.

Upvotes: 403

Jed Lynch
Jed Lynch

Reputation: 2156

If you have installed a node package and are still getting message that the package is undefined, you might have an issue with the PATH linking to the binary. Just to clarify a binary and executable essentially do the same thing, which is to execute a package or application. ei webpack... executes the node package webpack.

In both Windows and Linux there is a global binary folder. In Windows I believe it's something like C://Windows/System32 and in Linux it's usr/bin. When you open the terminal/command prompt, the profile of it links the PATH variable to the global bin folder so you are able to execute packages/applications from it.

My best guess is that installing webpack globally may not have successfully put the executable file in the global binary folder. Without the executable there, you will get an error message. It could be another issue, but it is safe to say the that if you are here reading this, running webpack globally is not working for you.

My resolution to this problem is to do away with running webpack globally and link the PATH to the node_module binary folder, which is /node_modules/.bin.

WINDOWS: add node_modules/.bin to your PATH. Here is a tutorial on how to change the PATH variable in windows.

LINUX: Go to your project root and execute this...

export PATH=$PWD/node_modules/.bin:$PATH 

In Linux you will have to execute this command every time you open your terminal. This link here shows you how to make a change to your PATH variable permanent.

Upvotes: 2

acousticplanet
acousticplanet

Reputation: 171

For Visual Studio users: Right click on the npm folder and "Restore Packages".

Upvotes: 0

David  Gogua
David Gogua

Reputation: 53

Installing both webpack and CLI globally worked for me.

npm i -g webpack webpack-cli

Upvotes: 5

jayesh
jayesh

Reputation: 921

npm link webpack worked for me.

My webpack configuration: "webpack": "^4.41.2", "webpack-dev-server": "^3.9.0", "webpack-cli": "^3.3.10"

Upvotes: 0

aermin
aermin

Reputation: 451

You can try this.

npm install --only=dev

It works for me.

Upvotes: 1

Sreen Sunki
Sreen Sunki

Reputation: 361

Run below commands in Terminal:

npm install --save-dev webpack

npm install --save-dev webpack-dev-server

Upvotes: 35

SAIRAM
SAIRAM

Reputation: 11

Open npm command prompt and -- cd solution folder and then just run npm link webpack in NPM cmd prommt and re build..

Upvotes: 1

X3074861X
X3074861X

Reputation: 3819

I had a ton of issues getting a very simple .NET Core 2.0 application to build in VS 2017. This is the error from AppVeyor, however it was essentially the same thing locally (some paths omitted for security) :

Performing first-run Webpack build...

module.js:327 throw err;

EXEC : error : Cannot find module '......../node_modules/webpack/bin/webpack.js'

at Function.Module._resolveFilename (module.js:325:15)

at Function.Module._load (module.js:276:25)

at Function.Module.runMain (module.js:441:10)

at startup (node.js:140:18)

at node.js:1043:3

csproj(25,5): error MSB3073: The command "node node_modules/webpack/bin/webpack.js --config webpack.config.vendor.js" exited with code 1.

Build FAILED.

I stumbled upon this question and answer, and I noticed my local instance also had the same warning sign over the {Project Root} -> Dependencies -> npm folder. Right clicking and hitting "Restore packages" got everything loaded up properly, and I was able to build successfully.

Upvotes: 0

Seeliang
Seeliang

Reputation: 2949

for me, it is a wrong error feedback.

there was config error in webpack.config.js,

delete the file and start over solved my issue

Upvotes: 1

Oladayo agbolade
Oladayo agbolade

Reputation: 11

Just found out that using Atom IDE terminal did not install dependencies locally (probably a bug or just me). Installing git bash externally and running npm commands again worked for me

Upvotes: 0

Mazhar
Mazhar

Reputation: 1

Nothing suggested above worked for me (including the NODE_PATH variable). I created a sym link of "node_modules" from my local folder to the global AppData(eg below) and it worked like charm.

C:\Users\mmoinuddin\AppData\Roaming\npm>mklink /D node_modules c:\essportreact\day1\node_modules
symbolic link created for node_modules <<===>> c:\essportreact\day1\node_modules
C:\essportreact\day1>webpack
Hash: 2a82a67f90f9aa05ab4a
Version: webpack 1.15.0

Upvotes: 0

dev.bv
dev.bv

Reputation: 980

On windows, I have observed that this issue shows up if you do not have administrative rights (i.e., you are not a local administrator) on the machine.

As someone else suggested, the solution seems to be to install locally by not using the -g hint.

Upvotes: 1

Cody Sand
Cody Sand

Reputation: 266

I was having this issue on OS X and it seemed to be caused by a version mismatch between my globally installed webpack and my locally installed webpack-dev-server. Updating both to the latest version got rid of the issue.

Upvotes: 9

Ran
Ran

Reputation: 755

While working on windows, I've installed webpack locally and it fixed my problem

So, on your command prompt, go to the directory of which you want to run webpack, install webpack locally (without the -g) and enjoy...

Upvotes: 62

Jamie Treworgy
Jamie Treworgy

Reputation: 24334

Seems to be a common Windows problem. This fixed it for me:

Nodejs cannot find installed module on Windows?

"Add an environment variable called NODE_PATH and set it to %USERPROFILE%\Application Data\npm\node_modules (Windows XP), %AppData%\npm\node_modules (Windows 7), or wherever npm ends up installing the modules on your Windows flavor. To be done with it once and for all, add this as a System variable in the Advanced tab of the System Properties dialog (run control.exe sysdm.cpl,System,3)."

Note that you can't actually use another environment variable within the value of NODE_PATH. That is, don't just copy and paste that string above, but set it to an actual resolved path like C:\Users\MYNAME\AppData\Roaming\npm\node_modules

Upvotes: 24

Related Questions