hapi icon indicating copy to clipboard operation
hapi copied to clipboard

Import error related to types in a new project

Open dcyriller opened this issue 1 year ago • 1 comments

context

While using the framework for the first time, I encountered a minor issue. It's not critical (in my case, I will simply install joi), but I thought you might want to be aware of it. Have a good day!

reproduction

In a new node.js project:

  • install @hapi/hapi
  • create a server.ts file with the content:
import Hapi from "@hapi/hapi";

async function init() {
    const server = Hapi.server({
        port: 3000,
        host: 'localhost'
    });

    await server.start();
    console.log('Server running on %s', server.info.uri);
};

init();
  • you get the following error:
> tsc

node_modules/@hapi/hapi/lib/types/route.d.ts:2:68 - error TS2307: Cannot find module 'joi' or its corresponding type declarations.

2 import { ObjectSchema, ValidationOptions, SchemaMap, Schema } from 'joi';
                                                                     ~~~~~

node_modules/@hapi/hapi/lib/types/server/server.d.ts:4:22 - error TS2307: Cannot find module 'joi' or its corresponding type declarations.

4 import { Root } from 'joi';
                       ~~~~~


Found 2 errors in 2 files.

Errors  Files
     1  node_modules/@hapi/hapi/lib/types/route.d.ts:2
     1  node_modules/@hapi/hapi/lib/types/server/server.d.ts:4

note : npm i joi resolves the error.

a possible fix

https://github.com/hapijs/hapi/blob/23d65502a6cf5372f6db0acfaac9a5188b9050cd/lib/types/route.d.ts#L2

could it be?

 import { ObjectSchema, ValidationOptions, SchemaMap, Schema } from '@hapi/validate'; 

dcyriller avatar Sep 20 '23 07:09 dcyriller

Yeah, hapi should not import typings directly from joi.

I don't know if your suggestion will work, and suspect that it can cause other issues when used.

The real solution is probably to expose those objects through a new generic, that can ideally be inferred.

kanongil avatar Sep 20 '23 12:09 kanongil