Estou tentando iniciar uma Api de rotas no nodejs é da o seguinte erro:
C:\Users\arifu\ntask-api\node_modules\consign\lib\consign.js:121
/**
^
Error [ERR_REQUIRE_ESM]: require() of ES Module C:\Users\l\ntask-api\models\tasks.js from C:\Users\arifu\ntask-api\node_modules\consign\lib\consign.js not supported.
tasks.js is treated as an ES module file as it is a .js file whose nearest parent package.json contains "type": "module" which declares all .js files in that package scope as ES modules.
Instead either rename tasks.js to end in .cjs, change the requiring code to use dynamic import() which is available in all CommonJS modules, or change "type": "module" to "type": "commonjs" in C:\Users\l\ntask-api\package.json to treat all .js files as CommonJS (using .mjs for all ES modules instead).
at Object.newLoader [as .js] (C:\Users\l\ntask-api\node_modules\pirates\lib\index.js:121:7)
at Consign.into (C:\Users\l\ntask-api\node_modules\consign\lib\consign.js:231:15)
at file:///C:/Users/l/ntask-api/index.js:11:3 {
code: 'ERR_REQUIRE_ESM'
Ja troquei type: module para type: commonjs e dá outros erros como na importação do express.
package.json
Olá!
Não consigo iniciar um programa usando nodejs, babel e express
npm start
> nt-api@1.0.0 start
> babel-node index.js
C:\Users\ar\nt-api\node_modules\babel-core\lib\transformation\file\options\option-manager.js:328
throw e;
^
Error: Couldn't find preset "@babel/env" relative to directory "C:\\Users\\ar\\nt-api"
at C:\Users\ar\nt-api\node_modules\babel-core\lib\transformation\file\options\option-manager.js:293:19
at Array.map (<anonymous>)
at OptionManager.resolvePresets (C:\Users\ar\nt-api\node_modules\babel-core\lib\transformation\file\options\option-manager.js:275:20)
at OptionManager.mergePresets (C:\Users\ar\nt-api\node_modules\babel-core\lib\transformation\file\options\option-manager.js:264:10)
at OptionManager.mergeOptions (C:\Users\ar\nt-api\node_modules\babel-core\lib\transformation\file\options\option-manager.js:249:14)
at OptionManager.init (C:\Users\ar\nt-api\node_modules\babel-core\lib\transformation\file\options\option-manager.js:368:12)
at compile (C:\Users\ar\nt-api\node_modules\babel-register\lib\node.js:103:45)
at loader (C:\Users\ar\nt-api\node_modules\babel-register\lib\node.js:144:14)
at Object.require.extensions.<computed> [as .js] (C:\Users\ar\nt-api\node_modules\babel-register\lib\node.js:154:7)
at Module.load (node:internal/modules/cjs/loader:1207:32)
Node.js v21.2.0
Venho aqui tratar de um problema dúvida que estou tendo com um layout que estou tentando usar o formulário php dele.
Quando clico em enviar ele me enviar para um arquivo .php (assets/vendor/simple-forms/sendmail.php)
Ele não envia o e-mail, acredito que deveria aparecer uma mensagem que o contato foi enviado corretamente.
Vou deixar os arquivos aqui em anexo quem puder me ajudar nessa, ficaria muito grato.
Meu programa não consegue identificar o dotenv na middleware
Eu estava fazendo um CRUD simples, implementei o dotenv no meu programa, está funcionando quando faço a conexão com o banco de dados e a inserção e uma função normal, mais quando vou fazer isso dentro de uma middleware ele não chama meu dotenv, só funciona quando tiro o process.env e ponho as informações direto na função de conexão.
require( 'dotenv' ).config( { path: '../../.env' } )
const mysql = require( 'mysql2' )
// DESSA FORMA NÃO FUNCIONA
const connection_pool = mysql.createPool( {
host: process.env.DB_HOST,
user: process.env.DB_USER,
database: process.env.DB_DATABASE,
password: process.env.DB_PASS
} )
// DESSA FORMA FUNCIONA
// const connection_pool = mysql.createPool( {
// host: 'localhost',
// user: 'carlos',
// database: 'simple_crud',
// password: 'pass1241'
// } )
module.exports = connection_pool.promise()
INSERÇÃO NO BANCO DE DADOS
const db_conn = require( '../db/connection' )
const createNewClient = ( name ) => {
return db_conn.execute( `INSERT INTO client ( name ) values (?)`, [ name ] )
}
module.exports = { createNewClient }
FAZENDO A INSERÇÃO NO MIDDLEWARE
const data = require( '../data/client' )
const createClient = ( req, res, next ) => {
const client = req.body.name
data.createNewClient( client )
.then( () => {
res.status( 200 ).json( { 'status': 'sucess', 'client': client } )
} )
.catch( ( err ) => {
res.status( 404 ).json( { status: 'error', error: err } )
} )
.finally( () => {
next()
} )
}
module.exports = { createClient }
{
"status": "error",
"error": {
"message": "Access denied for user ''@'localhost' (using password: YES)",
"code": "ER_ACCESS_DENIED_ERROR",
"errno": 1045,
"sqlState": "28000",
"sqlMessage": "Access denied for user ''@'localhost' (using password: YES)"
}
}
Esse é o erro que obtenho quando uso o dotenv, lenbrando que as informações de login estão todas certas, e que em outra função que não seja um middleware funciona.