ERR_IMPORT_ASSERTION_TYPE_MISSING für den Import der JSON-Datei

Lesezeit: 2 Minuten

Benutzeravatar von PositiveGuy
PositivTyp

Dieser Code hat gut funktioniert.

Ich weiß nicht, ob es daran liegt, dass ich auf Node 17 oder was aktualisiert habe, aber jetzt bekomme ich es

TypeError [ERR_IMPORT_ASSERTION_TYPE_MISSING]:
  Module "file:///Users/xxxxx/code/projects/xxxxx/dist/server/data/countries.json" 
  needs an import assertion of type "json"

In meinem api.ts Ich habe:

import countryTable from './data/countries.json';

So fange ich an api.ts die verwendet wird von server.ts:

NODE_ENV=production node --optimize_for_size --trace-warnings --experimental-json-modules --no-warnings server/server.js

Benutzeravatar von GoldenretriverYT
GoldenretriverYT

Sie müssen Folgendes verwenden:

import countryTable from "./data/countries.json" assert { type: "json" };

https://github.com/tc39/proposal-import-assertions

  • Importzusicherungen wurden in Node v17.1.0 gemäß eingeführt Daswurde aber nach v17.5.0 erforderlich (im Zusammenhang mit dieser Änderung:github.com/nodejs/node/pull/40785). Importzusicherungen adressieren ein Sicherheitsproblem (v8.dev/features/import-assertions) über das Vertrauen in Cross-Origin-Importe.

    – pbatey

    21. März 2022 um 23:07 Uhr

  • Danke! Sie haben mir gerade eine Menge Ärger erspart, um zu verstehen, warum ein Code, der gestern gut funktioniert hat, plötzlich nicht mehr funktioniert! Ich brauchte eigentlich die zweite Version, die in GitHub beschrieben ist, aber Sie haben mir eine Welt voller Schmerzen erspart!

    – Nimrod Yanai

    31. März 2022 um 10:45 Uhr

  • Ich habe keinen Datenordner

    – Philipp Rego

    13. Juli 2022 um 2:27 Uhr

  • Wenn Sie dies tun und bekommen TS2821: Import assertions are only supported when the '--module' option is set to 'esnext' Sie können einfach hinzufügen // @ts-ignore in die Zeile über dem Import als Workaround für den Moment.

    – Malvine

    24. Dezember 2022 um 8:13 Uhr

  • @UneconscienceUneSource ist eine Sicherheitsmaßnahme im Zusammenhang mit CORS. Offensichtlich muss sich Python damit nicht befassen.

    – GoldenretriverYT

    2. Februar um 12:05 Uhr

Für alle, die ESLint-Validierungsprobleme haben (aufgrund von assert wird noch nicht unterstützt), können Sie versuchen, JSON synchron aus dem Dateisystem zu laden:

const loadJSON = (path) => JSON.parse(fs.readFileSync(new URL(path, import.meta.url)));

const countries = loadJSON('./data/countries.json');

Referenz: https://github.com/eslint/eslint/discussions/15305

Importieren .json in ES-Modulen, die Sie verwenden können

module.createRequire()

https://nodejs.org/dist/latest-v18.x/docs/api/esm.html#no-require-exports-or-moduleexports

weil Zusicherungen in v18.12.1 von node.js noch experimentell sind

import { createRequire } from 'node:module';
const require = createRequire(import.meta.url);

const countryTable = require('./data/countries.json');

https://nodejs.org/dist/latest-v18.x/docs/api/module.html#modulecreaterequirefilename

Dies funktioniert nur, wenn Sie ein bestimmtes Objekt importieren müssen, das Probleme mit ES6+ hat.

module.createRequire()

Codebeispiel:

import { createRequire } from 'node:module'

// Import the package.json file to get the version number by using the createRequire function
const require = createRequire(import.meta.url)
const { version } = require('../../package.json')

Sie können auch einen Bundler verwenden, um Ihren Code in commonjs zu konvertieren.

1442000cookie-checkERR_IMPORT_ASSERTION_TYPE_MISSING für den Import der JSON-Datei

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy