Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

844
Visualizações
Azure App Service: error del módulo Nodejs ES

Intentando alojar un servidor API de nodejs simple en el servicio de aplicaciones de Azure, pero aparece el siguiente error cuando Azure intenta implementarlo

 Error [ERR_REQUIRE_ESM]: Must use import to load ES Module: D:\home\site\wwwroot\server.js require() of ES modules is not supported. require() of D:\home\site\wwwroot\server.js from D:\Program Files (x86)\iisnode\interceptor.js is an ES module file as it is a .js file whose nearest parent package.json contains "type": "module" which defines all .js files in that package scope as ES modules. Instead rename server.js to end in .cjs, change the requiring code to use import(), or remove "type": "module" from D:\home\site\wwwroot\package.json.

Se verificó el servicio de aplicaciones de Azure, WEBSITE_NODE_DEFAULT_VERSION está configurado en ~14 y la versión de nodejs instalada es v14.15.0 en la aplicación web. No crea que esta versión del nodo ya tiene problemas con la importación y exportación.

El código funciona perfectamente bien localmente con cualquiera de

 node server.js # or node --experimental-modules server

No estoy seguro de por qué está fallando en Azure

Mi código está a continuación:

servidor.js

 import express from 'express'; import bodyParser from 'body-parser'; let app = express(); app.use(bodyParser.urlencoded({ extended: true })); app.use(bodyParser.json()); let port = process.env.PORT || 8080; let router = express.Router(); // Middleware to use for all requests router.use(function(req, res, next) { next(); }); router.get('/', function(req, res) { res.json({ message: 'Default home page for the api!' }); }); app.use('/api', router); // START THE SERVER // ============================================================================= app.listen(port); console.log(`Server up and running on port ${port}`);

paquete.json

 { "name": "my_package", "version": "1.0.0", "type": "module", "scripts": { "start": "node --experimental-modules server", "test": "mocha" }, "dependencies": { "body-parser": "^1.19.0", "express": "^4.17.1" } }

Sin embargo, si cambio la importación y exportación para requerir, entonces se ejecutará en la aplicación web de Azure, ¿parece que Azure IIsnode aún no es compatible con Emac6? ¿Alguien sabe?

¿Alguien tiene alguna solución para esto además de usar babel para transpilar emac6 a emac5? Como tengo algún problema con la ejecución y ejecución del código emac5 transpilado.

Gracias

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Esto se puede resolver agregando un nuevo archivo junto a su server.js y configurándolo como el punto de entrada del servicio de la aplicación (o más específicamente de iisnode) (vea su web.config ).

Llamemos al nuevo archivo run.cjs y coloquemos solo la siguiente línea en él:

 import("./server.js");

La extensión del archivo cjs es importante porque le dice a Node que este archivo no es un módulo ES, como se esperaría debido a "type": "module" en su package.json . Esto permite que otros archivos CommonJS incluyan nuestro nuevo archivo, es decir, el interceptor.js de iisnode. Vuelve a importar server.js , que luego funciona bien como módulo ES.

over 4 years ago · Santiago Trujillo Relatório

0

Agregue "type": "module" en el archivo package.json . Funciona para mí.

 { "name": "module-error", "version": "1.0.0", "description": "", "main": "server.js", "scripts": { "start": "node --experimental-modules server", "test": "mocha" }, "dependencies": { "body-parser": "^1.19.0", "express": "^4.17.1" }, "author": "", "license": "ISC", "type": "module" }

ingrese la descripción de la imagen aquí

over 4 years ago · Santiago Trujillo Relatório

0

Agregando a lo que dijo @sibbl

  1. Simplemente abra su web.config
  2. busque server.js reemplácelo con run.cjs

¡Funciona! Gracias de nuevo @sibbl

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda