es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

No se puede encontrar el módulo con Serverless.

Estoy utilizando Typescript, ApolloServer, graphql, serverless y Lambdas para desarrollar mi aplicación. Al ejecutar sls offline start estoy obteniendo el siguiente error:

offline: Error: No se puede encontrar el módulo '/Users/aroe/Desktop/projects/test-serverless-backend/functions/graph/graphql'
Require stack:

Aquí está mi configuración del archivo serverless.yml:

service: gamitrak-backend # nombre del servicio
provider:
  name: aws # implementar en AWS
  runtime: nodejs12.x
  versionFunctions: false # deshabilitar versionamiento de funciones
  region: us-west-2 # región de AWS
  apiGateway:
    shouldStartNameWithService: true

functions:
  graph:
    handler: /src/functions/graph/graphql.handler # ruta del controlador Lambda
    events:
      - http:
          path: graphql # definir el endpoint Lambda
          method: any # cualquier método HTTP puede acceder a esta Lambda
          cors: true # habilitar CORS
plugins:
  - serverless-offline

En handler: podemos ver que está intentando acceder a mi función, aquí está ese archivo cuando se ejecuta el comando PWD para mostrar la ruta:

/Users/aroe/Desktop/projects/test-serverless-backend/src/functions/graph

Aquí está el código real que se está intentando ejecutar:

import { ApolloServer, gql } from 'apollo-server-lambda';
import { usersTypeDefs, usersResolvers } from './schema/users';

// obtener el esquema de GraphQL

// funciones de resolución

const server = new ApolloServer({ typeDefs: usersTypeDefs, resolvers: usersResolvers });

// lanzar el servidor cuando se llame a la Lambda
export async function handler(_event: any, _context: any) {
  const handler = server.createHandler();
  console.log(handler);
  return handler;
}

Mi inclinación es pensar que no puede acceder al archivo por alguna razón. Sin embargo, no estoy seguro de por qué o cómo.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error indica que el comando sls offline start no puede encontrar el módulo ubicado en /Users/aroe/Desktop/projects/test-serverless-backend/functions/graph/graphql.

    Al examinar el archivo serverless.yml, se observa que la propiedad handler para la función graph está establecida en /src/functions/graph/graphql.handler, lo cual no coincide con la ruta de archivo real src/functions/graph/index.ts, como se indica en el fragmento de código proporcionado.

    Para solucionar esto, la propiedad handler debe actualizarse a src/functions/graph/index.handler. Esto permitirá que el comando sls offline start encuentre el módulo necesario y ejecute la aplicación serverless con éxito.

    Además, vale la pena mencionar que el punto final graphql definido en la propiedad events de la función graph utiliza el método HTTP any. Puede ser conveniente restringir esto a métodos específicos si es apropiado para los requisitos de la aplicación.

Comments are closed.