我更新到 nanoid4 并开始收到以下错误:
[ERR_REQUIRE_ESM]:不支持 ES 模块 [...]/node_modules/nanoid/index.js 的 require()。相反,将 [...]/signup_test.ts 中的 index.js 的 require 更改为动态 import(),该动态 import() 在所有 CommonJS 模块中都可用
这是它抱怨的导入:
import { customAlphabet } from 'nanoid'
Run Code Online (Sandbox Code Playgroud)
这是我正在使用的 tsconfig 文件:
{
"ts-node": {
"files": true
},
"compilerOptions": {
"jsx": "react-jsx",
"types": [
"node",
"codeceptjs"
],
"experimentalDecorators": true,
"lib": [
"dom",
"dom.iterable",
"esnext"
],
"allowJs": true,
"skipLibCheck": true,
"strict": false,
"forceConsistentCasingInFileNames": true,
"noEmit": true,
"esModuleInterop": true,
"module": "ES6",
"moduleResolution": "node",
"resolveJsonModule": true,
"incremental": true,
"target": "ESNext",
},
"include": [
"next-env.d.ts",
"**/*.ts", …Run Code Online (Sandbox Code Playgroud) 我不知道当我在 React Native 中使用nanoid包时到底发生了什么,它显示了某种以下错误。我不确定。
\n我希望有人能从这个社区得到帮助。
\n提前致谢。
\n场景:我只是导入到 nanoid 包中。
\nimport { nanoid } from 'nanoid';\nRun Code Online (Sandbox Code Playgroud)\nError: React Native does not have a built-in secure random generator. If you don\xe2\x80\x99t need unpredictable IDs use `nanoid/non-secure`. For secure IDs, import `react-native-get-random-values` before Nano ID. \nat node_modules\\react-native\\Libraries\\LogBox\\LogBox.js:148:8 in registerError\nat node_modules\\react-native\\Libraries\\LogBox\\LogBox.js:59:8 in errorImpl\nat node_modules\\react-native\\Libraries\\LogBox\\LogBox.js:33:4 in console.error\nat node_modules\\expo\\build\\environment\\react-native-logs.fx.js:27:4 in error\nat node_modules\\react-native\\Libraries\\Core\\ExceptionsManager.js:104:6 in reportException\nat node_modules\\react-native\\Libraries\\Core\\ExceptionsManager.js:171:19 in handleException\nat node_modules\\react-native\\Libraries\\Core\\setUpErrorHandling.js:24:6 in handleError\nat node_modules\\react-native\\Libraries\\polyfills\\error-guard.js:49:36 in ErrorUtils.reportFatalError \nat node_modules\\metro\\src\\lib\\polyfills\\require.js:204:6 in guardedLoadModule\nat http://192.168.43.19:19000/node_modules%5Cexpo%5CAppEntry.bundle?platform=android&dev=true&hot=false&minify=false:203661:3 in …Run Code Online (Sandbox Code Playgroud) 我目前正在尝试在我的(Firebase)nodejs 项目中导入和使用 nanoid。我安装了它
npm i nanoid
Run Code Online (Sandbox Code Playgroud)
我尝试导入它
import { nanoid } from 'nanoid'
Run Code Online (Sandbox Code Playgroud)
和
import { nanoid } from '../node_modules/nanoid/nanoid.js'
Run Code Online (Sandbox Code Playgroud)
我尝试的一切都失败了。我是 Nodejs 和 js 本身的初学者,但没有网站或文档帮助我解决问题。我只想要一个唯一的 ID :(
这是我的index.html(减少到最小值:
<!DOCTYPE html>
<html>
<head>
<title>Welcome to Firebase Hosting</title>
!!!Here are Firebase imports!!!
<script defer src="/__/firebase/init.js?useEmulator=true"></script>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div class="registerContainer">
<div class="registerContent">
<h1 id="title">Sign up</h1>
<iframe name="hiddenFrame" width="0" height="0" border="0" style="display: none;"></iframe>
<form id="form" onsubmit="return false">
<!-- Birth date Input (required) -->
<div class="input_field">
<input id="date" onfocus="(this.type = 'date')" class="text_input" …Run Code Online (Sandbox Code Playgroud) 我尝试将 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 ?
nanoid ×4
es6-modules ×2
javascript ×1
nestjs ×1
node.js ×1
npm ×1
react-native ×1
typescript ×1