Jest 和文件加载器导入

smb*_*smb 4 reactjs webpack jestjs

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

"file-loader?name=scripts/[name].[hash].js!jsstore/dist/jsstore.worker.min.js"
Run Code Online (Sandbox Code Playgroud)

运行 Jest 时,会抛出以下错误:

Cannot find module 'file-loader?name=scripts/[name].[hash].js!jsstore/dist/jsstore.worker.min.js'
Run Code Online (Sandbox Code Playgroud)

我通过设置 modulePathIgnorePatterns 和 moduleNameMapper 尝试在 Jest 的 package.json 中进行不同的配置,但这两种配置设置都不起作用:

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

fel*_*osh 6

您可以将此导入映射到一个文件,该文件将返回一个“ stringwhich”file-loader返回的内容;

moduleNameMapper: {
  "^file\-loader":"<rootDir>/__mocks__/fileMock.js",
}
Run Code Online (Sandbox Code Playgroud)
moduleNameMapper: {
  "^file\-loader":"<rootDir>/__mocks__/fileMock.js",
}
Run Code Online (Sandbox Code Playgroud)