我想使用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用于我的笑话测试?