No soy un ciudadano de habla inglesa, no soy bueno en inglés pero lo hice mejor.
Estoy tratando de importar un archivo js que importó json de html
.js
import JSON from '../json/menu.json'; (function () { function parseMenu(ul, menu) { for (var i=0;i<menu.length;i++) { if(menu.sub == null) { menu.sort(function(a, b) { return a.id > b.id ? -1 : a.id > b.id ? 1 : 0; }); } var li=$(ul).append('<li><a href="'+menu[i].link+'">'+menu[i].name+'</a></li>'); if (menu[i].sub!=null) { var subul=$('<ul id="submenu'+menu[i].link+'"></ul>'); $(li).append(subul); parseMenu($(subul), menu[i].sub); } } } var menu=$('#menu'); parseMenu(menu, JSON); });formulario .json
[ { { }, { } }, { { }, { } }, { } ]lo intenté como
<script type="module" src="../js/left.js"></script> <script type="module" src="../json/menu.json"></script>en html
Pero aparece el siguiente error Error al cargar la secuencia de comandos del módulo: se esperaba una secuencia de comandos del módulo JavaScript, pero el servidor respondió con un tipo MIME de "aplicación/json". Se aplica una estricta verificación de tipo MIME para los scripts de módulo según la especificación HTML. en .json
Lo resolví.
Primero. Cambió el nombre de la variable. JSON a menús
Segundo. Eliminado <script type="module" src="../js/left.mjs"></script>
Ultimo. Se cambió import JSON from '../json/menu.json'; para import menus from '../json/menus.json' assert { type: "json" };
Supongo que en realidad estás tratando de usar .js como src en esta parte:
<script type="module" src="../json/menu.json"></script>Chrome actualmente es compatible con https://github.com/tc39/proposal-import-assertions . Esto le permite decirle al navegador que está importando un archivo json:
import JSON from '../json/menu.json' assert { type: "json" }; Por cierto, no debe usar JSON como nombre de variable porque es un objeto integrado: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON