Yar*_*riv 3 es6-modules nestjs nanoid
我尝试将 nanoid 导入 NestJS 并收到此错误:
错误 [ERR_REQUIRE_ESM]:ES 模块的 require() ....
... 而是将 ... 中的 index.js 的 require 更改为所有 CommonJS 模块中都可用的动态 import() 。
导入代码是:
import { Injectable } from '@nestjs/common';
import { nanoid } from 'nanoid'; //wont import, gives error
import { User } from './data-objects/user.object';
Run Code Online (Sandbox Code Playgroud)
我还尝试了导入语句的变体:
// I tried this alternative
import * as nanoid from 'nanoid';
// Also tried this
const nanoid = require ( 'nanoid' );
Run Code Online (Sandbox Code Playgroud)
什么都没起作用。
为什么会发生此错误以及我应该如何在 NestJS 中安装 nanoid ?
Yar*_*riv 15
通过简单的搜索,我无法找到问题的直接答案,只有在对nanoid github 问题 #365进行一些研究后才找到了答案。
2022 年 6 月 8 日,nanoid Ver.4.0.0 发布,并进行了重大更改。
它有一个新功能,现在仅支持 ESM 应用程序
这使得它与使用 CommonJS 的应用程序不兼容。链接到更改日志...
Nanoid 支持团队承诺将根据需要继续支持 Ver.3.xx,直到对 Nodejs 和 Nestjs 中的 EMS 提供支持。
在 NestJS 支持 ESM 的那一天到来之前,您将不得不继续使用 nanoid 版本 3.xx
npm uninstall nanoidnpm install nanoid@^3.0.0我的解决方案的来源来自 github 问题@ayushsharma82中的评论。
| 归档时间: |
|
| 查看次数: |
3233 次 |
| 最近记录: |