[▲ Vercel Community](/) · [Categories](/categories) · [Latest](/latest) · [Top](/top) · [Live](/live) [Help](/c/help/9) # Cannot find module './types' 211 views · 3 likes · 3 posts Sirjoasramos (@sirjoasramos) · 2024-08-19 Dear all, I have an error in my api project published in vercel, after the build. The error says: Cannot find module './types' Require stack: - /var/task/node_modules/@hapi/hoek/lib/clone.js - /var/task/node_modules/@hapi/hoek/lib/applyToDefaults.js - /var/task/node_modules/@hapi/hoek/lib/index.js - /var/task/node_modules/@hapi/boom/lib/index.js - /var/task/node_modules/@hapi/jwt/node_modules/@hapi/cryptiles/lib/index.js - /var/task/node_modules/@hapi/jwt/lib/crypto.js - /var/task/node_modules/@hapi/jwt/lib/index.js - /var/task/src/services/authService.js - /var/task/app.js - /var/task/___now_launcher.js - /var/runtime/index.mjs Did you forget to add it to "dependencies" in `package.json`? --- However, on my machine it works perfectly. On vercel, I even changed the run configuration. I overrided it to: npm install --legacy-peer-deps But it still doesn't work. Can someone please help me? app.js: //app.js require('dotenv').config(); const hapi = require("@hapi/hapi"); const { initializeApp, cert } = require('firebase-admin/app'); const serviceAccount = require('./statsdatabase.json'); const AuthService = require('./src/services/authService'); // Importa o serviço de autenticação const init = async () => { // Inicializa o Firebase Admin SDK initializeApp({ credential: cert(serviceAccount), storageBucket: 'statsdatabase-b4489.appspot.com' }); // Configura o servidor Hapi const server = hapi.server({ port: process.env.PORT || 8080, host: "0.0.0.0", routes: { cors: true // Habilita CORS para permitir requisições de outros domínios }, state: { strictHeader: false // Corrige problemas com cookies } }); // Log global para todas as requisições server.ext('onRequest', (request, h) => { console.log(`Received request for ${request.path} with method ${request.method}`); return h.continue; }); // Log para verificar se a requisição chega ao manipulador (handler) server.ext('onPreHandler', (request, h) => { console.log('onPreHandler: Requisição chegou ao manipulador'); return h.continue; }); // Middleware global para capturar erros server.ext('onPreResponse', (request, h) => { const response = request.response; if (response.isBoom) { console.error('Global Error Handler:', response.output.payload); } return h.continue; }); // Registra plugins, incluindo autenticação JWT e rate limiting await server.register([ require('@hapi/jwt'), // Autenticação JWT require('hapi-rate-limit') // Rate Limiting para proteger a API contra abusos ]); // Configura a estratégia de autenticação JWT server.auth.strategy('jwt', 'jwt', { keys: process.env.JWT_SECRET || 'your-secret-key', // Use uma variável de ambiente para a chave secreta verify: { aud: false, iss: false, sub: false, nbf: true, exp: true, maxAgeSec: 14400, // 4 horas timeSkewSec: 15 }, validate: AuthService.validateToken // Função para validar o token }); // Carrega as rotas da aplicação await server.register([ require('./src/routes/homeRoutes'), require('./src/routes/teamRoutes'), require('./src/routes/tournamentRoutes'), require('./src/routes/newsRoutes'), // Inclui as rotas de notícias require('./src/routes/authRoutes') // Rota para autenticação ]); console.log('Routes registered successfully'); // Inicia o servidor await server.start(); console.log(`Server running at: ${server.info.uri}`); }; // Inicia a aplicação init().catch(err => { console.error(err); process.exit(1); }); package.json: { "name": "statsck-api", "version": "1.0.0", "description": "Stack API - Beta Version", "scripts": { "test": "nyc mocha 'tests/**/*.js'", "start": "node app.js" }, "author": "Joás Ramos", "license": "ISC", "dependencies": { "@hapi/boom": "^10.0.1", "@hapi/hapi": "^20.2.1", "@hapi/hoek": "^11.0.4", "@hapi/jwt": "^3.2.0", "@hapi/vision": "^7.0.3", "axios": "^1.3.1", "bcrypt": "^5.1.1", "dotenv": "^16.4.5", "firebase-admin": "^12.3.1", "got": "^12.0.1", "hapi-rate-limit": "^7.1.0", "multiparty": "^4.2.3", "node-fetch": "^3.2.0", "nodemailer": "^6.9.14", "nodemon": "^3.1.4" }, "repository": { "type": "git", "url": "https://github.com/sirjoasramos/statsck-api.git" }, "devDependencies": { "chai": "^4.3.7", "mocha": "^10.2.0", "nyc": "^15.1.0", "sinon": "^15.2.0" } } vercel.json: { "version": 2, "builds": [ { "src": "app.js", "use": "@now/node" } ], "routes": [ { "src": "/(.*)", "dest": "app.js", "methods": [ "GET", "POST", "PUT", "DELETE", "PATCH", "OPTIONS" ], "headers": { "Access-Control-Allow-Origin": "*" } } ] } Amy Egan (@amyegan) · 2024-08-19 · ♥ 1 Hi @sirjoasramos. I suspect part of the problem is that your project uses [the deprecated @now/node package](https://www.npmjs.com/package/@now/node). Please try updating to the `@vercel/node` package for the build configuration in `vercel.json` and let us know whether that works for you. Sirjoasramos (@sirjoasramos) · 2024-08-23 · ♥ 2 thanks very much! its work