hapijs / hapi

The Simple, Secure Framework Developers Trust
https://hapi.dev
Other
14.64k stars 1.34k forks source link

Import error related to types in a new project #4459

Open dcyriller opened 1 year ago

dcyriller commented 1 year ago

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:

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:
```sh
> 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'; 
kanongil commented 1 year ago

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.