【问题标题】:Jest and file-loader importJest 和文件加载器导入
【发布时间】:2020-04-25 04:01:57
【问题描述】:

我目前正在使用文件加载器在我的反应应用 (CRA) 中的一个文件中导入一个模块:

"file-loader?name=scripts/[name].[hash].js!jsstore/dist/jsstore.worker.min.js"

运行 Jest 时,会抛出这个错误:

Cannot find module 'file-loader?name=scripts/[name].[hash].js!jsstore/dist/jsstore.worker.min.js'

我通过设置 modulePathIgnorePatterns 和 moduleNameMapper 为 Jest 尝试了 package.json 中的不同配置,但配置设置都不起作用:

"modulePathIgnorePatterns": [
        "file-loader?name=scripts/[name].[hash].js!jsstore/dist/jsstore.worker.min.js"
      ]
"moduleNameMapper": {
        "file-loader?name=scripts/[name].[hash].js!jsstore/dist/jsstore.worker.min.js": "<rootDir>/node_modules/jsstore/dist/jsstore.worker.min.js"
      }

【问题讨论】:

    标签: reactjs webpack jestjs


    【解决方案1】:

    您可以将此导入映射到将返回 string 的文件,file-loader 将返回该文件;

    moduleNameMapper: {
      "^file\-loader":"<rootDir>/__mocks__/fileMock.js",
    }
    
    // __mocks__/fileMock.js
    
    module.exports = 'file-path-mock';
    

    【讨论】:

    • 感谢您指出moduleNameMapper,我完全错过了这种可能性!
    猜你喜欢
    • 1970-01-01
    • 2017-08-16
    • 2019-09-28
    • 2011-07-23
    • 2018-04-24
    • 2021-08-19
    • 2020-02-24
    • 2020-03-03
    相关资源
    最近更新 更多