我试图从lodash中只导入一个函数,如下所示:
import get from 'lodash/get';
我已经安装了lodash和@ types / lodash,我收到了这个错误:
@ types / lodash / get / index“'没有默认导出。)
答案 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';