Webpack错误:找不到模块“less”。

33

我正在尝试在webpack中使用less loader,但出现了问题 - 我已经本地安装了less loader,但是当我尝试在终端中使用webpack命令编译所有内容时,它会输出错误信息:“ERROR in Cannot find module 'less'”。在我的入口点中,我需要引入一些less文件。

require("./less_components/style.less");

以下是我的webpack.config文件

module.exports = {

entry: "./entry.js",

output: {

    path: "./build",

    filename: "./bundle.js"

},

module: {

    loaders: [

        {test: /\.js$/, exlude: /node_modules/, loader: "babel-loader"},

        {test: /\.less$/, loader: "style!css!less"}

    ]
}
}

发生了什么问题,我该怎么修复它?


你的 node_modules 中有安装 less-loader 吗? - Sean Larkin
是的,我确实这样认为,在发布之前我认为这可能是问题所在。 - Alex Buddy
错误:找不到模块“less” @ ./less_components/style.less 4:14-167这是我得到的输出。less_components 是我的样式文件所在的路径。 - Alex Buddy
8个回答

73

这个错误的出现是因为npm@3不再解决peerDependencies的问题。

npm install less less-loader是正确的操作方式。


2
我会添加--save-dev,因为less通常仅在开发过程中需要。 - Gabriel Hautclocq
谢谢大家,这个解决方案很有帮助。 - Amey Zulkanthiwar
谁决定不安装所需依赖? - NDM

30

看起来你还没有将 less-loader 安装到你的 node_modules 中。安装它可以解决这个问题。

npm install less-loader --save-dev

编辑:当您链接 less-loader 时没有安装 css-loaderstyle-loader ,也会收到此错误。

任何遇到这个问题的人都可以在我提交的问题上回应。问题是有关错误信息的,当缺少链接在 less 后面的加载器时出现“找不到模块 'less'”错误消息。请参阅:"Error in Cannot find module 'less'" when missing loaders chained after less. Revise error message


1
你能否清除你的node模块并尝试重新安装吗? - Sean Larkin
1
还可以尝试将加载器名称更改为less-loader,而不是less。这将有助于确认它无法找到的是加载器,因为错误消息将显示less-loader - Sean Larkin
1
你能检查并确保你也安装了css-loader和style-loader吗?https://github.com/webpack/less-loader/issues/45 - Sean Larkin
3
非常感谢!问题是我没有安装css-loader和less,因为没有这两个东西,控制台会不断发送错误信息。 - Alex Buddy
36
我曾遇到过完全相同的错误,并尝试了 npm install less-loader style-loader css-loader --save-dev。然而,这并没有解决问题,但是一旦我安装了模块 less,即不带 -loader 后缀的模块,错误就消失了! - Eirik Birkeland
显示剩余3条评论

17

我遇到了同样的问题。错误提示为“找不到模块 'less'”。

├── UNMET PEER DEPENDENCY file-loader@*
├── UNMET PEER DEPENDENCY less@^2.3.1
├── webpack@1.13.2 
└── webpack-dev-server@1.16.2 
npm WARN EPEERINVALID less-loader@2.2.3 requires a peer of less@^2.3.1 
but none was installed.
npm WARN EPEERINVALID url-loader@0.5.7 requires a peer of file-loader@* 
but none was installed.

我尝试按照以下方式:

npm install --save-dev less
npm install --save-dev file-loader

然后它解决了问题。


同样的问题,之前的答案没有解决,但是一个简单的 npm i less 命令解决了问题。 - dpnmn

6

我在一个 .Net Core 项目中也遇到了同样的问题。我通过在 package.json 文件中添加 less 和 less-loader 来解决这个问题。

"less-loader": "2.2.3",
"less": "2.7.2"

5

在我的情况下,我已经拥有less-loader、style-loader和css-loader,但仍然出现相同的错误。当我安装了less之后,问题就解决了。所以请确保你也安装了less。npm install less --save-dev修复了我的问题。


1

错误信息描述了问题:缺少 'less' 模块。

npm install less --save-dev 可以解决这个问题。

大多数情况下,您应该拥有所有的 less/less-loader/css-loader/style-loader。

npm install style-loader css-loader less-loader less --save-dev


0

我安装了less和less-loader后也遇到了错误。 然后我尝试卸载它们并重新安装,但没有意义。 enter image description here

最后,我发现删除最后一个已存在的dist可以使'npm run build'正确运行。 因此,如果已经存在,请尝试删除'dist'目录。


0

@Zhorian,你的代码太棒了!我无法投票,因为我的等级太低,也不能在你的答案下添加评论。但是,在执行npm install less --save-dev之后,它可以正常工作,解决了错误问题:

Module build failed: Error: Cannot find module 'less'

当你尝试安装时:

npm install less-loader style-loader css-loader --save-dev

它将会给你:

├── css-loader@0.26.1
├── UNMET PEER DEPENDENCY less@^2.3.1
├── less-loader@2.2.3
└── style-loader@0.13.1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接