繁体   English   中英

打字稿lodash没有一个函数的默认导出

[英]Typescript lodash no default export for one function

我试图只从 lodash 导入一个函数,如下所示:

import get from 'lodash/get';

我已经安装了 lodash 和 @types/lodash,我收到了这个错误:

@types/lodash/get/index"' 没有默认导出。)

您可以使用import isEqual from 'lodash/isEqual';从 lodash 导入单个函数import isEqual from 'lodash/isEqual'; 在编译器选项中带有esModuleInterop标志的打字稿 (tsconfig.json)

例子

{
  "compilerOptions": {
    "module": "commonjs",
    "target": "es5",
    "lib": ["es6", "dom"],
    "moduleResolution": "node",
    "esModuleInterop": true,
    ...
  }
}

我遇到了同样的问题,我最终到了这里,

所以这里是解决方案:

你需要安装lodash-es

npm install --save lodash-es

而不是普通的lodash

并阅读此链接

https://medium.com/@armno/til-importing-lodash-into-angular-the-better-way-aacbeaa40473

更新 1:它应该更容易,但无论如何

第 1 点:安装类型

 npm i -D @types/lodash-es

第 2 点:从“lodash-es”而不是“lodash”导入

第 3 点:像这样导入,这是正确的方法(否则你会得到一个更大的包)

import  orderBy  from 'lodash-es/orderBy';

我设法通过使用以下方法来解决类似的错误:

import * as get from 'lodash.get';

我能解决这个问题的唯一方法是:

import get = require("lodash.get");

在此处查看类似示例:https ://github.com/DefinitelyTyped/DefinitelyTyped/issues/14160

另一个建议, import * as get from 'lodash.get'; 如果您没有正确的配置,会像这样失败:TS2497:通过打开“esModuleInterop”标志并引用其默认导出,只能使用 ECMAScript 导入/导出引用此模块

实际上,我的 tsconfig.json 中有这个:

"allowSyntheticDefaultImports": true,
"esModuleInterop": true

无论如何它都会失败(不适用于Reactmoment和其他包,而仅适用于这个 lodash.get 包)。 所以,丑陋的require可以解决问题(我的意思是丑陋的只是因为它破坏了 ES6 导入语法,这意味着我们错过了代码一致性)。

这是我必须做的才能使其适用于lodash.random ,我认为它也应该适用于lodash.get

  • npm install --save lodash.random你想要的 lodash 的功能
  • 安装链接到它的类型: npm install --save-dev @types/lodash.random
  • tsconfig.json compilerOptions.allowSyntheticDefaultImports设置为true
  • import { random } from 'lodash';一样导入它import { random } from 'lodash';

您需要执行以下操作:

"allowSyntheticDefaultImports": true

错误显示,看起来没有默认导出。 你应该这样做。

import {get} from 'lodash/get';

您可以使用:

import { get } from "lodash";

或者:

import { get } from "lodash-es";

对于后者,您需要安装适当的输入文件(其中显然包括default导出):

npm install @types/lodash-es --save-dev

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM