Импорт fecha не работает в сочетании с Jest в TypeScript - PullRequest
0 голосов
/ 08 января 2019

Я хотел бы использовать fecha 3.0.2 для форматирования дат в моем проекте TypeScript. Однако, только мой маленький тестовый пример не работает.

import fecha from "fecha";
console.log(fecha.format(new Date(), "YYYY"));

Этот фрагмент кода кажется правильным для кода Visual Studio. Однако, когда я пытаюсь скомпилировать его через веб-пакет, я получаю сообщение об ошибке (TypeError: Невозможно прочитать свойство 'format' из undefined).

Определения TypeScript fecha.d.ts для fecha.js выглядят хорошо для меня.

Я использую webpack 4.28.3 и TypeScript 3.2.2.

В fecha.js, fetch экспортируется так:

export default fecha;

... где эта переменная fecha объявлена ​​и инициализирована следующим образом:

var fecha = {};

... и методы типа format добавляются так:

fecha.format = function (// ...

РЕДАКТИРОВАТЬ: Я создал минимальный пример проекта для воспроизведения ошибки

ЦСИ / app.ts

import fecha from "fecha";
console.log(fecha.format(new Date(), "YYYY"));

ЦСИ / app.test.ts

import fecha from "fecha";

it("format date", () => {
    expect(fecha.format(new Date(), "YYYY")).toEqual("2019");
});

package.json

{
    "private": true,
    "dependencies": {
        "fecha": "3.0.2"
    },
    "devDependencies": {
        "@types/jest": "23.3.12",
        "awesome-typescript-loader": "5.2.1",
        "jest": "23.6.0",
        "ts-jest": "23.10.5",
        "typescript": "3.2.2",
        "webpack": "4.28.3",
        "webpack-cli": "3.2.1"
    },
    "jest": {
        "transform": { ".ts": "ts-jest" },
        "testRegex": "\\.test\\.ts$",
        "moduleFileExtensions": [ "js", "ts" ]
    }
}

tsconfig.json

{
    "include": [ "./src/" ]
}

webpack.config.js

module.exports = {
    entry: './src/app.ts',
    output: {
        filename: 'bundle.js'
    },
    resolve: {
        extensions: [".ts"]
    },
    module: {
        rules: [
            { test: /\.ts$/, use: { loader: 'awesome-typescript-loader' } }
        ]
    }
}

yarn webpack -p работает, но yarn jest выдает ошибку TypeError: Невозможно прочитать свойство 'format' из неопределенного. Так что, кажется, шутка и феха не любят друг друга. Есть ли способ использовать fecha для моих шутливых тестов?

...