首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法解析‘/fonts/mem.woff 2’中的‘D:\Programming\Demos\webpack’使用绝对路径压缩\src‘

无法解析‘/fonts/mem.woff 2’中的‘D:\Programming\Demos\webpack’使用绝对路径压缩\src‘
EN

Stack Overflow用户
提问于 2021-01-17 11:38:19
回答 1查看 946关注 0票数 0

我正在配置Webpack在一个现有的项目,我是避免改变项目结构。在scss文件中,我包含了以/(例如url(‘/fonts/mem.woff 2’)开头的文件,我相信这就是我问题的原因。

styles.scss

代码语言:javascript
复制
@font-face {
    font-family: 'MyFont';
    src: url('/fonts/mem.woff2') format('woff2'),
      url('/fonts/slick.woff') format('woff');
    font-weight: 600;
    font-style: normal;
}

而错误是:

错误:无法解析‘/字体/mem.woff2’中的‘D:\Programming\Demos\webpack-紧凑\src’在(D:\Programming\Demos\webpack-compact\node_modules\enhanced-resolve\lib\Resolver.js:293:18) at D:\Programming\Demos\webpack-compact\node_modules\enhanced-resolve\lib\Resolver.js:362:15 at D:\Programming\Demos\webpack-compact\node_modules\enhanced-resolve\lib\Resolver.js:410‘:5在#en2# (eval at create (D:\Programming\Demos\webpack-compact\node_modules\enhanced-resolve\node_modules\tapable\lib\Hoo at D:\Programming\Demos\webpack-compact\node_modules\enhanced-resolve\lib\Resolver.js:410:5 at eval )\ D:\Programming\Demos\webpack-compact\node_modules\enhanced-resolve\lib\Resolver.j处的lib\Descriptio(在D:\Programming\Demos\webpack-compact\node_modules\enhanced-resolve\lib\Resolver.j上创建(D:\Programming\Demos\webpack-compact\node_modules\enhanced- )

我的webpack档案如下所示:

代码语言:javascript
复制
module.exports = env => {
const isDev = env.NODE_ENV == 'dev';

return {
    target: 'web',
    mode: 'development',
    devtool: 'inline-source-map',
    entry: {            
        index: path.resolve(__dirname, "src", "index.js")
    },
    output: {
        filename: '[name].js',
        path: path.resolve(__dirname, 'dist'),            
    },
    devServer: {
        contentBase: path.resolve(__dirname, 'dist'),
        port: '8080',
        host: 'localhost',
        hot: true,
        open: true,
        inline: true
    },
    plugins: [
        new CleanWebpackPlugin(),            
        new HtmlWebpackPlugin({
            title: 'Development',
            template: path.resolve(__dirname, "src", "index.html"),
            filename: 'index.html',
        })
    ],
    module:{
        rules: [               
            {
                test: /\.(woff|woff2|eot|ttf|otf)$/,
                loader: 'file-loader',
                options: {
                    name: '[name].[ext]',
                    outputPath: 'fonts/',
                },
            }
            ...

我知道如果我用./将字体路径更改为./它将有效。我的问题是,是否可以只更改webpack的配置,而不是转到所有scss文件并更改url上的路径(‘/fonts/mem.woff2’)?

EN

回答 1

Stack Overflow用户

发布于 2021-01-17 11:57:22

我相信用webpack.NormalModuleReplacementPlugin是可能的。

下面是你能做到的方法:

代码语言:javascript
复制
plugins: [
 //…
 new webpack.NormalModuleReplacementPlugin(
      /^\/fonts\/mem\.woff2/,
      function (resource) {
        resource.request = resource.request.replace(/^\//, './');
      }
    )
]

由于示例中有两种字体,所以可以应用另一个webpack.NormalModuleReplacementPlugin插件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65760110

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档