简体   繁体   中英

NodeJs Cannot Find Module. Path and name are correct

I'm trying to debug a simple error in NodeJs. Error: Cannot find module './schema/schema'. I tried to create a dummy file with a string and trying to require in my project root and the same error showed up. I tried to delete the folder and the file about 3x and the error persist. Here is my code:

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');
});

My schema file

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
});

How my project is organised:

在此处输入图像描述

I tried to clone this project in another machine and the error persist. Does anyone have a clue about this? There are no typos, no spaces in the file, also I tried to delete node modules and run yarn and no success.

The correct syntax is:

import sampleModule = require('modulename');

or

import * as sampleModule from 'modulename';

Then compile your TypeScript with --module commonjs.

Your files have a .ts extension.

It can't find the file because it doesn't have a .js or .cjs file extension.

If you're using TypeScript, then use:

  • import / export and not require / modules.exports and
  • a typescript compiler

If you're not using TypeScript then use a .js file extension.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM