• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
    • Questions
    • Teachers
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

635
Views
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

about 3 years ago · Santiago Trujillo
3 answers
Answer question

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.

about 3 years ago · Santiago Trujillo Report

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í

about 3 years ago · Santiago Trujillo Report

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

about 3 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error