【问题标题】:Disable cache warning for Pixi loader禁用 Pixi 加载程序的缓存警告
【发布时间】:2018-12-27 18:09:09
【问题描述】:

在使用 PixiJS 加载器加载多个精灵图集时,我收到以下警告:

Texture added to the cache with an id [SomeID] that already had an entry

由于有一些资产位于两个地图集中,我知道这是从哪里来的,但是是否可以通过代码捕获、忽略或禁用此警告(而不仅仅是忽略控制台中的所有警告)?

解决方案

感谢@Shawn 的回答,我最终安装了 preprocess-loader 并将此代码添加到我的 vue.config.js:

module.exports = {
    chainWebpack: config => {
        config.module
            .rule('preprocess-loader')
            .test(/\.[js|ts]/)
            .include.add(/pixi\.js/).end()
            .use('preprocess-loader')
                .loader('preprocess-loader')
                .options({DEBUG:false})
                .end()
    }
}

同时拥有.test() 部分和.include 部分有点多余,但也无妨:)

【问题讨论】:

    标签: javascript caching warnings pixi.js


    【解决方案1】:

    警告只记录在两个地方 --

    质地 - https://github.com/pixijs/pixi.js/blob/f913327e55897d50e37c5c3addee468aeb8a0cb8/src/core/textures/Texture.js#L498

    基础纹理 - https://github.com/pixijs/pixi.js/blob/f6f00047d6c523df2aa366cf3745eb831cec6ec5/src/core/textures/BaseTexture.js#L807

    如果您查看任一调用上方的几行代码,您会看到看起来像是条件编译的预处理指令,如果您处于调试模式,则该指令仅应包含该代码。 例如:

    // @if DEBUG
          <test for error and warn>
    // @endif
    

    在此处查看预处理器示例:https://www.npmjs.com/package/preprocess

    奇怪的是,我在他们的 package.json 中没有看到那个库,所以我不确定那个预处理器逻辑是否还存在。根据 package.json 中的脚本以及代码中缺少其他预处理器,我怀疑是否使用了预处理器逻辑。

    因此,如果您不想解决导致警告的资源冲突,您可以 (i) 启用条件编译,从而触发这些预处理器 if 语句,然后以调试模式以外的模式运行代码,或者 (ii)只需进入您正在使用的代码并注释掉两个 console.warn 语句(即我在开头链接的那两行)。

    选项 (ii) 似乎更容易一些。 :)

    编辑/更新:

    用您的回复中的信息充实选项 (i),Arno:

    这里有一些 webpack 加载器(如果他们的文档可信的话)添加了条件预处理:

    https://www.npmjs.com/package/webpack-preprocessor-loader https://www.npmjs.com/package/preprocess-loader

    根据 vue-cli 文档,您可以按照此链接中的说明添加新的加载器:

    https://cli.vuejs.org/guide/webpack.html#adding-a-new-loader

    例子:

    // vue.config.js
    module.exports = {
      chainWebpack: config => {
        // GraphQL Loader
        config.module
          .rule('graphql')
          .test(/\.graphql$/)
          .use('graphql-tag/loader')
            .loader('graphql-tag/loader')
            .end()
      }
    }
    

    它看起来好像是通过this library 提供的命令式 api 生成 webpack 配置。

    因此,如果您真的需要消除这些警告,我建议 (1) 添加其中一个预处理器 webpack 集成,然后 (2) 看看您是否可以通过中描述的方法添加新的 webpack 加载器文档。希望对您有所帮助。

    【讨论】:

    • 感谢您的建议。第二个选项对我来说是不行的,因为我不想触摸 npm 文件夹中的任何文件。第一个选项看起来很优雅,但我将 vue-cli-service 与 TypeScript 编译器结合使用来构建所有内容。即使手动安装预处理,我也不知道将预处理选项放在哪里。对此有什么想法吗?
    • 谢谢!这就像一个魅力......添加了我对问题的最终解决方案。
    猜你喜欢
    • 2022-08-11
    • 2020-07-13
    • 1970-01-01
    • 1970-01-01
    • 2012-09-07
    • 2017-10-18
    • 2014-09-06
    • 2016-01-13
    • 1970-01-01
    相关资源
    最近更新 更多