Estoy usando Pm2 y este es el error:
SyntaxError: Cannot use import statement outside a module Warning: To load an ES module, set "type": "module" in the package.json or use the .mjs extension. El problema es que el package.json ya está configurado en "type": "module" .
Además, todo solía funcionar bien hasta que reinicié el servidor.
Aquí está el archivo .js real:
const http = require('http'); const url = require('url'); const querystring = require('querystring'); const hostname = 'localhost'; const port = 8080; import captureWebsite from 'capture-website'; const server = http.createServer((req, res) => { res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end('Hello World!\n'); .... });Si las llamadas require no arrojan un error, el "archivo .js real" que crea el servidor http en la publicación se trata como CommonJS. Pero el código CommonJS no puede usar declaraciones de import y necesita usar expresiones de importación en su lugar (consulte los documentos de nodo y MDN ).
Si usa importaciones dinámicas (que son asíncronas), también necesitará usar el módulo importado después de una declaración de await (dentro de una función async ), o en un controlador de éxito proporcionado en un método then :
// .... import('capture_website') .then( capture_website => { // code requiring existence of `capture_website` }) .catch( err=> console.error("Import of capture_website failed", err));Sin embargo, puede importar módulos CommonJS usando una declaración de importación en archivos ES6 ( Node doc ).
Por lo tanto, una mejor solución puede ser cambiar el nombre del archivo js principal publicado para darle una extensión .mjs y reemplazar todas las declaraciones requeridas en el archivo con declaraciones de import :
import http from 'http'; import url from 'url'; import querystring from 'querystring'; Esto elimina el error de sintaxis Cannot use import statement outside a module . Los módulos importados que son CommonJS aún deberían poder requerir módulos usando la función require .