No puedo usar put(element, content) incluso después de importar y exportar la función.
root/index.html
<!DOCTYPE html> <html> <head> <meta charset="utf-8" name="viewport" content="width=device-width"> <meta name="title" content="${name}"> <meta property="og:title" content="${name}"> <meta property="og:site_name" content="Made using GBuild"> <meta property="og:description" content="GBuild is untested web game builder"> <title>${name}</title> <link href="style/build.css" rel="stylesheet"> <script type="module" src="script/build.js"></script> </head> <body> <div id="container">Hello world</div> <script type="module" src="script/build.js"></script> <script type="module" src="build/scripted.js"></script> </body> </html>raíz/compilación/guión.js
put('h1', 'Hello Two')raíz/script/build.js
const container = document.getElementById('container'); function put (element, content) { return container.append('<br>', `<${element}>${content}</${element}>`) } exports.container = container; exports.put = put; Editar: I did actually use express for this, so ${name} will replaced by it's value
Otra edición: I already used <Express>.static() on 'script/' , 'style/' and 'build/'
Incluso otra edición: Please see my REPLIT
Los módulos ES6 no son módulos CommonJS (e incluso en los módulos CommonJS, aún necesita importar desde el otro archivo, lo que no está haciendo). Para <script type="module" - módulos ES6 - necesita usar la palabra clave de import y export .
// scripted.js import { put } from '../../build/scripted.js'; put('h1', 'Hello Two'); // build.js export const container = document.getElementById('container'); export function put (element, content) { return container.append('<br>', `<${element}>${content}</${element}>`) } No necesita el <script type="module" src="script/build.js"></script> en el HTML, porque ahora lo importa directamente el otro archivo del módulo. Por lo general, es una buena idea elegir un script de punto de entrada y hacer que todo se ramifique a partir de eso; hace que las cosas sean mucho más fáciles una vez que un proyecto realmente se pone en marcha.