Проблема с загрузкой "@ svgdotjs / svg.js" (3.0.11) в тестовом коде TypeScript под управлением Jest - PullRequest
0 голосов
/ 02 февраля 2019

Я постоянно получаю сообщение об ошибке "Не удается найти модуль '@ svgdotjs / svg.js'" в проекте TypeScript, даже если VSCode видит библиотеку в node_modules просто отлично.Может быть, я просто совершенно не понимаю, как работают модули!Библиотека прекрасно работает, используя tsc и tslint.

Я занимаюсь разработкой библиотеки, которая будет отображать SVG на основе ввода JSON.Я пытаюсь запустить модульные тесты.Я использую svgdom для макета необходимого контейнера DOM.

Сокращенно package.json:

"dependencies": {
    "@svgdotjs/svg.js": "github:svgdotjs/svg.js",
},
"devDependencies": {
    "chai": "^4.2.0",
    "jest": "^23.6.0",
    "svgdom": "0.0.18",
    "ts-jest": "^23.10.5",
    "ts-loader": "^5.3.3",
    "ts-node": "^8.0.2",
    "tslint": "^5.12.1",
    "typescript": "^3.3.1",
}

ls node_modules:

    Directory: D:\github\renderer\node_modules


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----       2019-02-01   6:01 PM                .bin
d-----       2019-02-01   6:00 PM                @babel
d-----       2019-02-01   6:00 PM                @svgdotjs

Верх index.ts:

import SVG from "@svgdotjs/svg.js";
import Ajv from "ajv";
import { renderers } from "./renderers";
import { APRenderRep } from "./schema";
import schema from "./schema.json";

Соответствующие частииз index.test.js:

import { render } from "../src/index";

test("debugging outputter", () => {
    const data = {};
    // As per the `svgdom` docs
    const window = require("svgdom");
    const {SVG, registerWindow} = require("@svgdotjs/svg.js");
    registerWindow(window, window.document);
    const canvas = SVG(document.documentElement);
    render(canvas, data);
    console.log(canvas.svg());
});

И если этого кода недостаточно, вот tsconfig.json:

{
    "compilerOptions": {
        "module": "commonjs",
        "target": "es2015",
        "esModuleInterop": true,
        "sourceMap": true,
        "declaration": true,
        "outDir": "build",
        "resolveJsonModule": true,
        "strictNullChecks": true,
        "noImplicitThis": true,
        "noImplicitAny": true,
        "baseUrl": ".",
        "paths": {
            "*": [
                "node_modules/*",
                "src/types/*"
            ]
        }
    },
    "include": [
        "src/**/*"
    ]
}

и jest.config.js:

module.exports = {
    globals: {
        'ts-jest': {
            tsConfig: 'tsconfig.json'
        }
    },
    'coverageDirectory': undefined,
    'collectCoverage': false,
    'collectCoverageFrom': [
        '**/src/**/*.{ts,js}'
    ],
    moduleFileExtensions: [
        'ts',
        'js'
    ],
    transform: {
        '^.+\\.(ts|tsx)$': 'ts-jest'
    },
    testMatch: [
        '**/test/**/*.test.(ts|js)'
    ],
    testEnvironment: 'node'
};

Я ожидаю, что визуализированный SVG волшебным образом появится на консоли.Вместо этого я получаю следующее:

FAIL  test/index.test.ts
● Test suite failed to run

    Cannot find module '@svgdotjs/svg.js' from 'index.ts'

    > 1 | import SVG from "@svgdotjs/svg.js";
        | ^
    2 | import Ajv from "ajv";
    3 | import { renderers } from "./renderers";
    4 | import { APRenderRep } from "./schema";

    at Resolver.resolveModule (node_modules/jest-resolve/build/index.js:221:17)
    at Object.<anonymous> (src/index.ts:1:1)

Я попытался сбросить с нуля node_modules и переустановить.Я попробовал свежий клон репо и установки.

Реальное репо здесь: https://github.com/AbstractPlay/renderer.

Ответы [ 2 ]

0 голосов
/ 08 февраля 2019

мне кажется, что файл rollup.config.js для @ svgdotjs / svg.js не обновлялся для 3.0.Он имеет:

format: node ? 'cjs' : 'iife',

, и я думаю, что это должно быть

format: node ? 'cjs' : 'umd',

Если я изменю это и восстановлю, я смогу загрузитьЭто.В файле d.ts все еще есть ошибки, но, по крайней мере, вы можете начать.

0 голосов
/ 02 февраля 2019

Короче говоря, на данный момент (v3.0.11), svg.js, похоже, просто не работает с Typescript, как я его использую.Когда я вернулся к версии NPM (v2.7.1), все работало как положено.

...