Я хотел бы использовать 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 для моих шутливых тестов?