대신 index.js의 요구 사항을 모든 공용에서 사용할 수 있는 동적 가져오기()로 변경합니다.JS 모듈
node/javascript/nfts로 작업하려고 하면 초보자이고 자습서를 따라갔지만 다음 오류가 발생합니다.
error [ERR_REQUIRE_ESM]: require() of ES Module [...] is not supported. Instead change the require of index.js [ in my file...] to a dynamic import() which is available in all CommonJS modules
노드 파일을 업데이트했기 때문에 튜토리얼과 다른 코드가 필요한 것으로 알고 있지만 어느 것으로 변경해야 하는지, 어디로 무엇으로 변경해야 하는지 모르겠습니다.가능한 한 구체적으로 말씀해 주시기 바랍니다.
const FormData = require('form-data');
const fetch = require('node-fetch');
const path = require("path")
const basePath = process.cwd();
const fs = require("fs");
fs.readdirSync(`${basePath}/build/images`).foreach(file).forEach(file => {
const formData = new FormData();
const fileStream = fs.createReadStream(`${basePath}/build/images/${file}`);
formData.append('file',fileStream);
let url = 'https://api.nftport.xyz/v0/files';
let options = {
method: 'POST',
headers: {
Authorization: '[...]',
},
body: formData
};
fetch(url, options)
.then(res => res.json())
.then(json => {
const fileName = path.parse(json.file_name).name;
let rawdata = fs.readFileSync(`${basePath}/build/json/${fileName}.json`);
let metaData = JSON.parse(rawdata);
metaData.file_url = json.ipfs_url;
fs.writeFileSync(`${basePath}/build/json${fileName}.json`, JSON.stringify(metaData, null, 2));
console.log(`${json.file_name} uploaded & ${fileName}.json updated!`);
})
.catch(err => console.error('error:' + err));
})
그것은 그 때문입니다.node-fetch
꾸러미의이 패키지의 최신 버전은 ESM만 지원하므로 이전 버전으로 다운그레이드해야 합니다.node-fetch@2.6.1
그 이하.
npm i node-fetch@2.6.1
이렇게 하면 문제가 해결됩니다.
이전 버전을 사용할 필요가 없습니다."require" 대신 이 줄을 사용할 수 있습니다.
const fetch = (...args) => import('node-fetch').then(({default: fetch}) => fetch(...args));
포장지로 가세요.json 파일 및 쓰기:
"type": "module",
디버그 이상의
글을 쓰는 대신에require('chalk')
.js 파일에서 다음으로 변경합니다.import chalk from 'chalk'
이 문제는 모듈 가져오기에 문제가 있는 패키지의 최신 버전을 설치할 때 발생할 수 있습니다.
저의 경우 최신 버전의 를 설치한 후 오류가 발생했습니다.crypto-random-string
꾸러미의어떤 패키지가 이 오류를 유발하고 있는지 확인하려면 위에 보고된 오류 이전 메시지를 확인합니다.제 경우에는 이렇게 적혀있습니다.error: uncaughtException: require() of ES Module /Users/myname/Documents/mydir/anotherdir/my-project/node_modules/crypto-random-string/index.js
이 문제를 해결하기 위해 다음과 같은 작업을 통해 이전 버전으로 다운그레이드했습니다.
yarn remove crypto-random-string
yarn add crypto-random-string@3.3.1
angular 13으로 업그레이드 후 angular-devkit의 common.js에서 이 오류가 발생했습니다.업그레이드 중에 누락된 내용을 발견했습니다.
ng 업데이트가 @ng-devkit 패키지를 확인하거나 업데이트하지 않음
다음을 사용하여 제거했습니다.
ng update @angular-devkit/build-angular
저에게 효과가 있었던 또 다른 옵션은 재배포하는 패키지 노드 가져오기 네이티브를 사용하는 것입니다.node-fetch
폴리필로 말입니다
하나의 문장을 추가했습니다. 당신은 이것을 볼 수 있습니다."type": "module",
문장, 다음에 적음license
.
"author": "",
"license": "ISC",
"type": "module",
"dependencies": {
"chalk": "^5.0.1"
}
}
언급URL : https://stackoverflow.com/questions/70541068/instead-change-the-require-of-index-js-to-a-dynamic-import-which-is-available
'source' 카테고리의 다른 글
WordPress 로그인 페이지 수정 문제 (0) | 2023.09.17 |
---|---|
후행 공백이 있는 Windows 7(윈도우 7)에서 폴더를 삭제할 수 없습니다. (0) | 2023.09.17 |
만드는 법만드는 법모든 브라우저에서 지원됩니까?다른 대안이 있습니까?모든 브라우저에서 지원됩니까?다른 대안이 있습니까? (0) | 2023.09.17 |
jQuery - 단순 입력 유효성 검사 - "공백" 및 "공백하지 않음" (0) | 2023.09.17 |
열을 삭제하려고 하면 오류 1025(HY000)가 발생합니다....(오류: 150) 이름 변경 시 오류 발생 (0) | 2023.09.17 |