[英]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
无论如何它都会失败(不适用于React 、 moment和其他包,而仅适用于这个 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.