我刚刚开始与webpack和我有困难得到多入口点样本构建。示例中的webpack.config.js文件包含以下行

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

这个错误对我来说是无效的

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

在搜索中,我找到了其他使用CommonsChunkPlugin和表达式的示例

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

哪个错误会失败

ReferenceError: webpack is not defined

更多的搜索发现了一些例子,包括

var webpack = require('webpack');

我的构建现在失败了

Error: Cannot find module 'webpack'

我不知道该怎么做。


当前回答

所以有相当少的可能的问题,在我的情况下,在windows:

我将我的项目移动到名称中带有&的文件夹,这对windows来说很好,但它破坏了npm。我的解决方案是从名称中删除&。

测试&mock -> test_and_mock

其他回答

上面建议的任何方法都不适合我(包括NODE_PATH变量)。我创建了一个sym链接的“node_modules”从我的本地文件夹到全局AppData(如下所示),它就像魅力。

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

刚刚发现使用Atom IDE终端没有在本地安装依赖项(可能是一个错误或只是我)。在外部安装git bash并再次运行npm命令对我来说是有效的

虽然建议的解决方案(npm链接webpack)在本地工作,但在我的CI (GitHub动作)上,我也有同样的问题,为了解决它,我使用了:

 npm i --save-dev webpack

如果您已经安装了一个节点包,但仍然收到包未定义的消息,则可能与指向二进制文件的PATH链接有关。澄清一下,二进制文件和可执行文件本质上做的是相同的事情,即执行一个包或应用程序。ei webpack……执行节点包webpack。

在Windows和Linux中都有一个全局二进制文件夹。在Windows中,我认为它是C://Windows/System32,在Linux中是usr/bin。当您打开终端/命令提示符时,它的概要文件将PATH变量链接到全局bin文件夹,以便您能够从它执行包/应用程序。

我最好的猜测是,全局安装webpack可能没有成功地将可执行文件放在全局二进制文件夹中。如果没有可执行文件,您将得到一条错误消息。这可能是另一个问题,但可以肯定地说,如果你正在阅读这篇文章,那么全局运行webpack并不适合你。

我对这个问题的解决方案是取消全局运行webpack,并将PATH链接到node_module二进制文件夹,即/node_modules/.bin。

窗口: 将node_modules/.bin添加到PATH中。 下面是一个关于如何在窗口中更改PATH变量的教程。

LINUX: 转到你的项目根目录并执行这个…

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

在Linux中,每次打开终端时都必须执行这个命令。这个链接向您展示了如何对PATH变量进行永久更改。

对我来说,这是一个错误的错误反馈。

webpack.config.js中的配置错误

删除文件,重新开始解决了我的问题