Webpack:无法解析模块“文件加载器”

Posted

技术标签:

【中文标题】Webpack:无法解析模块“文件加载器”【英文标题】:Webpack: cannot resolve module 'file-loader' 【发布时间】:2016-03-25 00:05:46 【问题描述】:

当我尝试使用 webpack 构建 SASS 文件时,出现以下错误:

找不到模块:错误:无法解析模块“文件加载器”

请注意,此问题仅在我尝试使用相对路径加载背景图像时发生。

这个工作正常:

  background:url(http://localhost:8080/images/magnifier.png);

这会导致问题:

   background:url(../images/magnifier.png);

这是我的项目结构

图片 样式 webpack.config.js

这是我的 webpack 文件:

var path = require('path');
module.exports = 
    entry: 
        build: [
            './scripts/app.jsx',
            'webpack-dev-server/client?http://localhost:8080',
            'webpack/hot/only-dev-server'
        ]
    ,
    output: 
        path: path.join(__dirname, 'public'),
        publicPath: 'http://localhost:8080/',
        filename: 'public/[name].js'
    ,
    module: 
        loaders: [
            test: /\.jsx?$/, loaders: ['react-hot', 'babel?stage=0'], exclude: /node_modules/,
            test: /\.scss$/, loaders: ['style', 'css', 'sass'],
            test: /\.(png|jpg)$/, loader: 'file-loader',
            test: /\.(ttf|eot|svg|woff(2)?)(\?[a-z0-9]+)?$/, loader: 'file-loader'
        ]
    ,
    resolve: 
        extensions: ['', '.js', '.jsx', '.scss', '.eot', '.ttf', '.svg', '.woff'],
        modulesDirectories: ['node_modules', 'scripts', 'images', 'fonts']
    
;

【问题讨论】:

css-loader 将每个url(...) 转换为require(...),因此../images/magnifier.png/\.(png|jpg)$/ 测试选中。你有安装文件加载器吗? @silvenon,感谢您的回复 file-loader 坏了,所以我重新安装了它,一切都会好起来的。谢谢 【参考方案1】:

正如@silvenon 在他的评论中所说:

你有安装文件加载器吗?

是的 file-loader 已安装但损坏,我的问题已通过重新安装解决。

npm install --save-dev file-loader

【讨论】:

对于那些想要使用url-loader的人:你还必须为它安装file-loader,所以运行npm install --save-dev file-loader 如果我不想让 webpack 加载文件怎么办?我不需要 webpack 来检查图像是否真的存在于 dist 文件夹中。 谢谢!花了很长时间尝试修复类似的错误,其中 /node_modules/@ionic/core/dist/ionic/svg/index.js 在尝试运行单元测试时出现错误并且仅在使用 Ionic Platform 时发生 谢谢!安装后为我工作。【参考方案2】:

我遇到了完全相同的问题,以下解决了它:

loader: require.resolve("file-loader") + "?name=../[path][name].[ext]"

【讨论】:

这看起来非常有用,但是我在将它映射到 webpack.config 和其他加载器配置时遇到了麻烦。你能提供一个更完整的例子吗?你的意思是这样吗? test: /\.(png|jpg)$/, loader: require.resolve("file-loader") + "?name=../[path][name].[ext]" 嗨@Ihahne,你用过纱线吗?我有同样的问题,我只能用这个命令解决。但我不知道为什么。【参考方案3】:

谢谢你 - 这是最后一件 Bootstrap、d3js、Jquery、base64 内联图像和我自己写得很糟糕的 JS 来玩 webpack。

回答上述问题以及解决问题的解决方案找不到模块:错误:无法解析模块“url” 编译引导字体时是

 
test: /glyphicons-halflings-regular\.(woff2|woff|svg|ttf|eot)$/,
loader:require.resolve("url-loader") + "?name=../[path][name].[ext]"

谢谢!

【讨论】:

【参考方案4】:

如果您使用 url-loader 并定义了 limit 配置,您可能会遇到非常相似的问题。 As the documentation states,如果您尝试加载的资源超出此限制,则file-loader 将用作后备。因此,如果您没有安装file-loader,则会提示错误。要修复此错误,请将此限制设置为更大的值或根本不定义它。

      
        test: /\.(jpg|png|svg)$/,
        use: 
          loader: 'url-loader',
          options: 
            limit: 50000, // make sure this number is big enough to load your resource, or do not define it at all.
          
        
      

【讨论】:

【参考方案5】:

如果您在运行 jest 时遇到此问题,请将其添加到 moduleNameMapper

"ace-builds": "<rootDir>/node_modules/ace-builds"

【讨论】:

以上是关于Webpack:无法解析模块“文件加载器”的主要内容,如果未能解决你的问题,请参考以下文章

Webpack 无法解析模块

Webpack 无法解析 Node.js 模块

webpack中的eslint导入:无法解析模块的路径

webpack sass-loader 不会解析 url

未找到模块:错误:无法使用 Webpack 解析“fs”

找不到模块:错误:无法解析模块“组件/应用程序”。 webpack + reactjs 问题