在React Typescript中无法解析'crypto-js'

时间:2019-11-20 16:15:59

标签: reactjs typescript encryption docker-compose cryptojs

我尝试在通过docker compose运行的react typescript中使用crypto-js,但出现以下错误

  

找不到模块:无法解析'/ app / crypto'中的'crypto-js'

这是我导入的crypto-js。例如:

import crypto from 'crypto-js';

export const encrypt = (key: string, evalue: any) => {
    const secret_key = crypto.SHA256(key);
    return crypto.AES.encrypt(evalue, secret_key).toString();
};

我尝试了很多次,但是没有用。

3 个答案:

答案 0 :(得分:0)

我最好的猜测是Typescript需要软件包的一些类型定义。

尝试运行npm install @types/crypto-js --save-dev

答案 1 :(得分:0)

关于您的tsconfig.json文件,我相信这是因为您指定了"include": [ "src" ],所以这意味着所有node_modules都将被跳过。 尝试将其删除并改用baseUrl选项。

构建项目不需要类型(除非您使用strict标志)。但是正如@Kael所说,安装它们可能很有用。因此您可以指定

"typeRoots": [
  "node_modules/@types"
],

在您的配置文件中

答案 2 :(得分:0)

尝试声明您的类型。d.ts

declare module 'crpyto-js' {
}

如果这行得通,我们现在至少可以确保您的TypeScript设置正确。

然后,您只需要安装@types/crypto-js软件包并再次删除模块声明即可。 如果这样不起作用,那么您的打字稿配置就不是您的node_modules / @ types文件夹。

然后在tsconfig.json中设置TypeRoots

  "compilerOptions": {
       "typeRoots" : ["./typings", "node_modules/@types"]
   }
}