代码之家  ›  专栏  ›  技术社区  ›  ajthinking

Jest在导入react图时失败,并显示“未定义self”

  •  0
  • ajthinking  · 技术社区  · 5 年前

    我试图创建一个与npm依赖项交互的基本jest测试: react-diagrams

    失败的测试

    import { DiagramModel } from '@projectstorm/react-diagrams'
    
    test('importing react diagrams', () => {
        let x = DiagramModel
    });
    

    DiagramModel 类导致此错误:

        ReferenceError: self is not defined
    
        > 1 | import { DiagramModel } from '@projectstorm/react-diagrams'
            | ^
          2 |
          3 | test('importing react diagrams', () => {
          4 |     let x = DiagramModel
    
          at Object.<anonymous> (node_modules/@projectstorm/react-diagrams/dist/index.umd.js:1:331)
          at Object.<anonymous> (tests/DiagramModel.test.ts:1:1)
    

    其他测试可以很好地工作,当在其他地方绑定时,依赖关系也可以很好地工作。

    module.exports = {
      preset: 'ts-jest',
      testEnvironment: 'node',
    };
    

    包.json

    "jest": "^26.6.3",
    "ts-jest": "^26.5.2",
    ...
    

    有什么办法可以补救吗?

    再生

    在中添加了测试+配置 codesandbox (但无法让试跑者接住它)。完整的 repo

    0 回复  |  直到 5 年前
        1
  •  3
  •   victorbalssa    5 年前

    经过一些测试,它最终可以使用以下配置:

    jest.config.js文件

    module.exports = {
      preset: 'ts-jest',
      testEnvironment: 'jsdom',
    };
    

    {
      "name": "jest-test",
      "version": "1.0.0",
      "main": "index.js",
      "license": "MIT",
      "devDependencies": {
        "jest": "^26.6.3",
        "ts-jest": "^26.5.2"
      },
      "scripts": {
        "test": "jest"
      },
      "dependencies": {
        "@emotion/react": "^11.1.5",
        "@emotion/styled": "^11.3.0",
        "@projectstorm/react-canvas-core": "^6.5.2",
        "@projectstorm/react-diagrams": "^6.5.2",
        "@projectstorm/react-diagrams-routing": "^6.5.2",
        "closest": "^0.0.1",
        "dagre": "^0.8.5",
        "pathfinding": "^0.4.18",
        "paths-js": "^0.4.11",
        "react": "^17.0.2",
        "resize-observer-polyfill": "^1.5.1"
      }
    }
    

    你错过了一个事实 @projectstorm/react-diagrams react dom 环境不是 nodejs .