Typescript lodash没有默认导出一个函数

时间:2017-03-27 08:22:14

标签: javascript typescript lodash

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

import get from 'lodash/get';

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

  

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

8 个答案:

答案 0 :(得分:4)

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

示例

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

答案 1 :(得分:2)

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

import * as get from 'lodash.get';

答案 2 :(得分:1)

这是我要使其适用于lodash.random的工作,我认为也应同样适用于lodash.get

  • 使用npm install --save lodash.random安装所需的lodash功能
  • 安装链接到它的类型:npm install --save-dev @types/lodash.random
  • 在您的compilerOptions.allowSyntheticDefaultImports中将true设置为tsconfig.json
  • 将其导入为import { random } from 'lodash';

答案 3 :(得分:0)

我只能解决的方法是:

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

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

答案 4 :(得分:0)

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

所以这是解决方法:

您需要安装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”导入

point 3 :像这样导入,这是正确的方法(否则,您将获得更大的捆绑包)

import  orderBy  from 'lodash-es/orderBy';

答案 5 :(得分:0)

您需要执行以下操作:

"allowSyntheticDefaultImports": true

答案 6 :(得分:-1)

您可以使用:

import { get } from "lodash";

或者:

import { get } from "lodash-es";

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

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

答案 7 :(得分:-2)

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

import {get} from 'lodash/get';