Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

388
Vistas
¿Por qué los módulos importados en funciones sin servidor no están definidos?

TL; DR: ¿por qué las importaciones devuelven undefined ? ¿Especialmente para módulos de nodejs nativos como path ?

Tengo una aplicación de prueba muy pequeña , creada con Vite, que tiene un único punto final en el directorio /api . Creé esto solo para jugar con Vite + Vercel.

Solo tengo 2 importaciones de módulos para mi punto final: path y fs-extra . Ambos regresan como undefined . No cannot read join of undefined con el módulo de path , así que envolví todo en un try/catch solo para ver si el punto final responde. Lo hace. Ver mi código a continuación.

 import type {VercelRequest, VercelResponse} from '@vercel/node'
import path from 'node:path' // I've also tried 'path'
import fs from 'fs-extra'

export default function handler(req: VercelRequest, res: VercelResponse) {
 // Both of these log 'undefined' on my Vercel dashboard for function logs.
 console.log('path module:', path)
 console.log('fs module:', fs)

 try {
 // https://vercel.com/guides/how-can-i-use-files-in-serverless-functions
 const pathFromProjectRootToFile = '/api/usersData.json'
 const usersDataFilePath = path.join( // THIS IS WHERE THE ERROR HAPPENS 🙃
 process.cwd(),
 pathFromProjectRootToFile
 )
 const usersData = fs.readJSONSync(usersDataFilePath)
 res.json({users: usersData})
 } catch (e) {
 res.json({error: errorToObject(e as Error)})
 }
}

function errorToObject(err?: Error): Record<string, string> | null {
 if (!err || !(err instanceof Error)) return null

 const obj: Record<string, string> = {}

 Object.getOwnPropertyNames(err).forEach(prop => {
 const value = err[prop as keyof Error]

 if (typeof value !== 'string') return

 obj[prop] = value
 })

 return obj
}

Aparte, en lugar de node:path , también probé solo path , pero lo mismo: undefined . Y tengo fs-extra como dependencia en mi package.json .

almost 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Al implementar una aplicación Vite en Vercel y utilizar el directorio /api para un back-end con funciones sin servidor, los módulos de node deben importarse mediante require , no import . La sintaxis de import funciona para tipos y módulos locales . Vea esta respuesta (y conversación) en las discusiones de la comunidad de Vercel.

 import type {VercelRequest, VercelResponse} from '@vercel/node'
import localModule from '../myLocalModule'

const path = require('path')
const fsOriginal = require('fs')
const fs = require('fs-extra')

// Rest of the file here...
almost 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda