Heim >Web-Frontend >js-Tutorial >Eine kurze Analyse, wie nodejs JSON-Dateien im ECMAScript-Modul lädt
So laden Sie JSON-Dateien in node im ECMAScript-Modul. Der folgende Artikel stellt Ihnen vor, wie NodeJS JSON-Dateien im ECMAScript-Modul lädt. Ich hoffe, er wird Ihnen hilfreich sein!
Nachdem Sie diesen Artikel gelesen haben, erfahren Sie:
1. Wie man JSON-Dateien lädt und analysiert 3. Lernen Sie import.meta .url
3. Neue URL lernen()
4. Wie wir alle wissen, wenn Sie
json
inCommonJS-Modul
laden , laden Sie es einfach direkt über die Funktionrequire()
und Sie können dasjson
-Objekt erhalten.Aber wenn Sie die JSON-Datei direkt in
ECMAScript-Modul
laden, wird ein Fehler wie folgt gemeldet:
Aktivieren Sie zunächst den ESM
-Modus. Tatsächlich das offizielle Dokument (http://nodejs.cn /api/esm.html#introduction): CommonJS模块
中加载json
文件,只需通过require()
函数直接加载即可,即能得到json
对象。
但是在ECMAScript模块
中直接加载json文件,会报错,报错如下:
首先,先启用
ESM
模式,其实官方文档(http://nodejs.cn/api/esm.html#introduction)中也有说明:Node.js 默认将 JavaScript 代码视为 CommonJS 模块。 作者可以通过
.mjs
文件扩展名、package.json
"type"
字段、或--input-type
标志告诉 Node.js 将 JavaScript 代码视为 ECMAScript 模块
那怎么才能在ECMAScript模块
加载json
文件呢?其实是有两种方案的:
假设现在有一个json文件:test.json
文件内容如下:
{ "name": "project" }
接下来,在index.js
中引入test.json
:
fs
文件系统读取 json
文件import { readFile } from "fs/promises"; // 以promise的方式引入 readFile API const json = JSON.parse( await readFile(new URL('./test.json', import.meta.url)) ) console.log('[json1]:', json); // 输出: { "name": "project" }
解释:
await
: 根据 ECMAScript 顶层 await
提案,await
关键字可用于模块内的顶层(异步函数之外);
import.meta.url
:nodejs
中返回模块在本地的file://
协议的绝对路径,例如:file://home/user/main.js
, 如果模块中还有另外一个文件test.js
,那么test.js
的路径就是new URL('test.js', import.meta.url)
;
new URL
: 生成file:
协议的对象(对于大多数 fs
模块函数,path
或 filename
参数可以作为使用 file:
协议的对象传入)。
nodejs
内置module
模块的createRequire
方法实现import { createRequire } from "module"; const require = createRequire(import.meta.url); const json = require('./test.json'); console.log('[json2]:', json); // 输出: { "name": "project" }
这种方法是根据nodejs
提供的createRequire
方法实现。
load-json-file
Wie kann ich also eine json
-Datei in das ECMAScript-Modul
laden? Tatsächlich gibt es zwei Lösungen: Angenommen, es gibt jetzt eine JSON-Datei: test.json
json
-Datei über den fs Dateisystem 🎜rrreee🎜Erläuterung: 🎜🎜<code>await
: Laut ECMAScript Top Level await Vorschlag 🎜, das Schlüsselwort await
kann auf der obersten Ebene innerhalb des Moduls (außerhalb der asynchronen Funktion) verwendet werden; 🎜🎜import .meta.url
: nodejs
gibt den absoluten Pfad des Moduls im lokalen file://
-Protokoll zurück, zum Beispiel: file:// home/user/main.js
, wenn es eine andere Datei test.js
im Modul gibt, dann ist der Pfad von test.js
new URL('test.js', import.meta.url)
; 🎜🎜neue URL
: Erzeugt ein Objekt des file:
-Protokolls (für die meisten fs-Modulfunktionen, path oder <code>filename
kann als Objekt mithilfe des file:
-Protokolls übergeben werden. 🎜createRequire
-Methode des integrierten module
-Moduls von nodejs Die Methode wird basierend auf der von <code>nodejs
bereitgestellten Methode createRequire
implementiert. 🎜🎜🎜load-json-file
🎜🎜🎜load-json-file🎜 wurde von mir versehentlich entdeckt npm-Website. Der Quellcode besteht nur aus 24 Zeilen, wie folgt: 🎜rrreee🎜🎜load-json-file source code🎜 Insgesamt ist es relativ einfach, aber es gibt auch viele Wissenspunkte, die tiefgreifend erlernt werden können. 🎜🎜Weitere Informationen zu Knoten finden Sie unter: 🎜nodejs-Tutorial🎜! ! 🎜Das obige ist der detaillierte Inhalt vonEine kurze Analyse, wie nodejs JSON-Dateien im ECMAScript-Modul lädt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!