首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Preact + Jest:"moduleNameMapper“和"moduleDirectories”吐露没有注册

Preact + Jest:"moduleNameMapper“和"moduleDirectories”吐露没有注册
EN

Stack Overflow用户
提问于 2020-05-22 08:10:48
回答 1查看 1.9K关注 0票数 0

我试着用Preact,包裹,打字稿和Jest来建立一个项目。为了将绝对路径用于导入,我的package.json中有以下内容:

代码语言:javascript
复制
"alias": {
  "src": "./src"
},

这允许我导入像import sum from 'src/math/sum';这样的文件,而不是import sum from '../../../math/sum';。这在实际构建和运行页面时都有效,但在使用Jest运行测试时,我会得到一个错误:在仔细研究了其他堆栈溢出问题之后,我尝试使用"moduleDirectories“和"moduleNameMapper”Jest配置字段使别名在Jest中工作,但错误从未改变。

以下是我的Jest配置(在package.json中):

代码语言:javascript
复制
"jest": {
    "clearMocks": true,
    "coverageDirectory": "coverage",
    "moduleDirectories": ["node_modules", "./"],
    "moduleNameMapper": {
        "^src[/](.+)": "<rootDir>/src/$1",
        "src/([^\\.]*)$": "<rootDir>/src/$1"
    },
    "testEnvironment": "node",
    "transform": {
        "^.+\\.tsx?$": "ts-jest"
    }
},

这是我的tsconfig.js:

代码语言:javascript
复制
{
    "compilerOptions": {
        "outDir": "./dist",
        "sourceMap": true,
        "noImplicitAny": true,
        "module": "es6",
        "moduleResolution": "node",
        "esModuleInterop": true,
        "target": "es6",
        "jsx": "react",
        "jsxFactory": "h"                                      
    },
    "include": ["./src/**/*"]
}

这是我的包版本:

代码语言:javascript
复制
"dependencies": {
    "preact": "^10.4.4",
    "preact-router": "^3.2.1",
    "typescript": "^3.9.3"
},
"devDependencies": {
    "@types/jest": "^25.2.3",
    "jest": "^26.0.1",
    "parcel-bundler": "^1.12.4",
    "ts-jest": "^26.0.0"
}
EN

回答 1

Stack Overflow用户

发布于 2020-05-23 03:40:13

我在为Parcel和Jest配置正确的路径时,缺少的部分是为tsconfig.json中的类型记录配置绝对路径。

现在,使用绝对路径,我的配置是:

package.json (用于包和Jest配置)

代码语言:javascript
复制
{
...
  "alias": {
    "src": "./src"
  },
  "jest": {
    "moduleNameMapper": {
      "^src/(.*)$": "<rootDir>/src/$1"
    },
    "preset": "ts-jest"
  },
...
}

tsconfig.json (baseUrl和paths是解决问题的两个领域)

代码语言:javascript
复制
{
    "compilerOptions": {
        ...
        "baseUrl": ".",
        "paths": {
            "src/*": ["./src/*"]
        }
    },
    "include": ["./src/**/*"]
}

现在我可以像这样导入我的TS文件,假设src目录中有一个名为"sum.ts“的文件:import sum from 'src/sum';

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

https://stackoverflow.com/questions/61950543

复制
相关文章

相似问题

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