【问题标题】:TypeError: sha256_1.default is not a function类型错误:sha256_1.default 不是函数
【发布时间】:2019-03-08 03:50:14
【问题描述】:

我在使用 jest 进行测试时遇到错误。我在这里使用非 es6 npm 包。当我不想执行任何通配符 * 导入时,就会出现此问题。我想做显式导入。

//code

import sha256 from "crypto-js/sha256";

export const GetHashToken = (value) => {
 return sha256(value);
};

//test

import { GetHashToken, GetUtcTimeStamp } from 
"../../utils/ScheduleRepairUtility";

describe("Get hash token utility", () => {
  it("Should return sha-256 hex digit string for given value", () => {
    const paramValue = "78436783465sears121212";   
    expect(GetHashToken(paramValue))
     .toBe("b87663752c7f5bf0967f74fd3523dece543
      f447e96d9b1d478c7336781e1828b");
  });
});

得到错误:

●  Get hash token utility › Should return sha-256 hex digit string for 
   given value

TypeError: sha256_1.default is not a function

我正在为我的项目使用 react-typescript。任何帮助表示赞赏。

谢谢!!

【问题讨论】:

  • 仅供参考:当我执行以下操作时一切正常: import * as sha256 from "crypto-js"

标签: reactjs typescript webpack ecmascript-6 jestjs


【解决方案1】:

这个语法对我有用

import * as sha256 from 'crypto-js/sha256';

【讨论】:

    【解决方案2】:

    我假设 crypto-js/sha256 模块通过 CommonJS 样式的导出分配 (module.exports = sha256) 导出 sha256 函数。要导入它,您要么需要使用 TypeScript 的特殊导入赋值语法:

    import sha256 = require("crypto-js/sha256");
    

    或启用esModuleInterop 编译器选项,该选项提供默认导入和导出分配之间的互操作性。

    【讨论】:

    • 谢谢马特。我使用 @types/node 中的 createHash 而不是 crypto-js/sha256 让它工作。
    猜你喜欢
    • 2023-01-28
    • 2020-04-04
    • 2017-07-27
    • 2017-07-15
    • 2016-02-26
    • 2013-04-01
    • 2016-03-06
    • 1970-01-01
    相关资源
    最近更新 更多