web-dev-qa-db-fra.com

Node server: le module de chargement a été bloqué en raison d'un type MIME non autorisé ("text / html")

J'obtiens le message d'erreur suivant lorsque j'essaie d'exécuter un serveur de noeud local avec une application très simple (voir codage ci-dessous).

Le module de chargement à partir de " http: // localhost: 8080/importing.js " a été bloqué en raison d'un type MIME non autorisé ("text/html").

Je suis nouveau sur les modules de nœuds et ES6, donc je ne comprends pas vraiment les détails du problème. En fonction de cela URL le type mime 'application/javascript' doit être servi explicitement pour les modules. Mais comment puis-je y parvenir dans mon exemple ci-dessous?

index.html

<!DOCTYPE html>
<html>
  <head>
    <script src="./importing.js" type="module"></script>
    <meta charset="utf-8">
  </head>
  <body>
  </body>
</html>

server.js

var http = require('http');
var fs = require('fs');

const PORT=8080;

fs.readFile('./index.html', function (err, html) {

    if (err) throw err;

    http.createServer(function(request, response) {
        response.writeHeader(200, {"Content-Type": "text/html"});
        response.write(html);
        response.end();
    }).listen(PORT);
});

importing.js

import {a} from './exporting.js';

console.log(a);

exporter.js

export const a = 'Constant a';

Je démarre le serveur en CMD avec

node server.js
2
Peter Petrus

Je sais que vous importez uniquement la commande, mais je vous ferai savoir ma solution pour cela et voir si vous êtes intéressé. Cette erreur, pour moi, provenait de l'instruction d'importation dans votre module. J'essayais d'importer le fichier entier, avec toutes les fonctions et les importations qu'il avait, tout en utilisant essentiellement le même serveur et HTML.

mon importing.js:

import * as Spotify from "./spotify-web-api.js";

window.basicAlert = function basicAlert() {
    alert("this is a test to see if basicAlert runs properly");
}

console.log("Should print to console with no error on imports");

Je ne connais pas la logique derrière le import * as, mais cela a fonctionné pour réussir l'importation de mon fichier sans générer d'erreur de type MIME. En ce qui concerne la window.basicAlert =, Javascript n'aime apparemment pas donner à un fichier qui l'importe l'accès à ses fonctions ou variables à moins qu'il ne soit attaché manuellement à la fenêtre. Vous n'avez pas cette erreur maintenant, mais après l'importation réussie du fichier, il vous indiquera que a n'est pas défini. Pendant que je l'ai attaché à ma fonction dans importing.js, vous devrez le mettre dans exporter.js comme ceci:

const a = 'Constant a';
windows.a = a;

Je n'ai pas testé cela ^ mais cela a du sens pour moi. J'espère que cela peut vous aider ou vous rapprocher, car cela a résolu mon problème.

0
Rhett Jarvis