Tengo un archivo JS que contiene un montón de constantes y algunas funciones primitivas en un módulo llamado global-namespaces.js . Ahora estoy tratando de actualizar mi código en el lado del cliente para usar modules
y la declaración de import
. Por cierto, sé que el siguiente código parece extraño, pero eso se debe a que todavía estoy luchando por encontrar una solución.
En el lado del servidor, solo uso require() . Sin embargo, parece que no puedo encontrar una manera de exportar los símbolos necesarios de global-namespaces.js
cuando se usa en el contexto del lado del cliente que no genera un error de sintaxis en el lado del servidor. No puedo poner el bloque/palabra clave de export
en una declaración IF porque eso genera un error de sintaxis. Aquí está mi código actual:
try { g_GlobalNamespaces = new GlobalNamespaces(); } catch(err) { console.error(`${errPrefix}Error occurred during the creation of the global GlobalNamespaces object.`); console.info(errPrefix + `err object:`); console.dir(err, {depth: null, colors: true}); } // Use this code on both client and server side. Are we on the server side? if (typeof module == 'undefined' || typeof module.exports == 'undefined') { // No. g_GlobalNamespaces is already in the client side global namespace. } else { // Yes. Export the code so it works with require(). module.exports = { g_GlobalNamespaces: g_GlobalNamespaces } } // We export it so it can be used via "import" statements. export // THIS STATEMENT GENERATES THE SYNTAX ERROR ON THE SERVER SIDE. { g_GlobalNamespaces }
Esta publicación SO no tiene respuestas:
Cómo compartir código entre el cliente y el servidor cuando se usa Node.js
Y esta publicación SO solo maneja el caso del lado del cliente y no me ayuda con el problema de compartir del lado del cliente y del servidor:
Exportación condicional en ES2015
¿Cómo puedo estructurar global-namespaces.js para poder usar el código tanto en el servidor como en el lado del cliente?