导入fecha不能与TypeScript中的Jest结合使用

时间:2019-01-08 12:47:21

标签: typescript webpack jestjs typescript-typings

我想使用fecha 3.0.2来格式化TypeScript项目中的日期。但是,只有我的小测试用例不起作用。

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

此代码片段似乎对于Visual Studio Code是正确的。但是,当我尝试通过webpack对其进行编译时,出现错误(TypeError:无法读取未定义的属性'format')。

fecha.d.ts的TypeScript定义fecha.js对我来说很好。

我正在使用webpack 4.28.3和TypeScript 3.2.2。

fecha.js中,fetch的输出如下:

export default fecha;

... fecha变量的声明和初始化如下:

var fecha = {};

...并像这样添加诸如format之类的方法:

fecha.format = function (// ...

编辑:我创建了一个用于重现错误的最小示例项目

src / app.ts

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

src / 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彼此不喜欢。有什么方法可以将fecha用于我的笑话测试?

0 个答案:

没有答案