【问题标题】:How to get Jest to recognize ES6 absolute path imports prepended with #?如何让 Jest 识别以 # 开头的 ES6 绝对路径导入?
【发布时间】:2021-10-15 08:59:43
【问题描述】:

根据NodeJS,他们建议在绝对路径前加上#。运行 Jest 时,它无法识别如何找到这些模块。我收到错误 Cannot find module '#loaders/logger' from 'src/loaders/logger.js',因为我使用这些绝对路径导入。

import { logger } from "#loaders/logger";

export const fn1 = () => { 
  // does something 
}

我将src 放在jest.moduleDirectories 中,但在理解# 时遇到问题。如何让 Jest 使用这种表示法解析到正确的路径?

package.json

{
    "engines": {
        "node": ">=14.x.x",
        "npm": ">=6.14.11"
    },
    "type": "module",
    "imports": {
        "#src/*": "./src/*.js",
        "#loaders/*": "./src/loaders/*.js",
    },
    "jest": {
        "moduleDirectories": [
            "node_modules",
            "src"
        ]
    },
    "scripts": {
        "test": "NODE_OPTIONS=--experimental-vm-modules npm jest",
    },
}

【问题讨论】:

    标签: node.js ecmascript-6 import path jestjs


    【解决方案1】:

    将 moduleNameMapper 添加到我的 Jest 配置中按照 the docs 工作

    package.json

    {
        "jest": {
            "moduleDirectories": [
                "node_modules",
                "src"
            ],
            "moduleNameMapper": {
                "#loaders": "<rootDir>/src/loaders",
                "#(.*)": [
                    "<rootDir>/src/embedded/path/$1",
                    "<rootDir>/src/$1",
                    "<rootDir>/src"
                ]
            }
        },
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-09
      • 2021-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-20
      • 2012-01-05
      相关资源
      最近更新 更多