Estoy tratando de depurar un error simple en NodeJs. Error: No se puede encontrar el módulo './schema/schema'. Traté de crear un archivo ficticio con una cadena e intenté requerir en la raíz de mi proyecto y apareció el mismo error. Intenté eliminar la carpeta y el archivo aproximadamente 3 veces y el error persiste. Aquí está mi código:
const express = require('express'); const expressGraphQL = require('express-graphql').graphqlHTTP; const schema = require('./schema/schema'); const app = express(); app.use('/graphql', expressGraphQL({ schema: schema, graphiql: true })); app.listen(4000, () => { console.log('Listening'); });
Mi archivo de esquema
const graphql = require('axios'); const axios = require('axios'); const { GraphQLObjectType, GraphQLString, GraphQLInt, GraphQLSchema, } = graphql const CompanyType = new GraphQLObjectType({ name: 'Company', fields: { id: { type: GraphQLString }, name: { type: GraphQLString }, description: { type: GraphQLString } } }); const UserType = new GraphQLObjectType({ name: 'User', fields: { id: { type: GraphQLString}, firstName: { type: GraphQLString }, age: { type: GraphQLInt }, company: { type: CompanyType, resolve(parentValue, args) { axios.get(`http://localhost:3000/companies/${parentValue.companyId}`).then( (response) => response.data ); } } } }); const RootQuery = new GraphQLObjectType({ name: 'RootQueryType', fields: { user: { type: UserType, args: { id: { type: GraphQLString } }, resolve(parentValue, args) { return axios.get(`http://localhost:3000/users/${args.id}`).then( (response) => response.data ); } }, company: { type: CompanyType, args: { id: { type: GraphQLString } }, resolve(parentValue, args) { return axios.get(`https://localhost:3000/companies/${args.id}`).then( (response) => response.data ); } } } }); module.exports = new GraphQLSchema({ query: RootQuery });
Cómo está organizado mi proyecto:
Intenté clonar este proyecto en otra máquina y el error persiste. ¿Alguien tiene una pista sobre esto? No hay errores tipográficos, ni espacios en el archivo, también traté de eliminar módulos de nodo y ejecutar yarn
y no tuve éxito.
Sus archivos tienen una extensión .ts
.
No puede encontrar el archivo porque no tiene una extensión de archivo .js
o .cjs
.
Si está usando TypeScript, entonces use:
import
/ export
y no require
/ modules.exports
y Si no está usando TypeScript, use una extensión de archivo .js
.
La sintaxis correcta es:
import sampleModule = require('modulename');
o
import * as sampleModule from 'modulename';
Luego compile su TypeScript con --module commonjs.