Skip to content

Can not find local declaration file for scoped packages #23999

Closed
@mlippert

Description

@mlippert

I am using the noImplicitAny switch, but I'm not sure whether that matters other than not showing that the declaration file is not found as quickly. However I should be able to use the noImplicitAny switch by creating the required declaration file locally.

My testing seems to show that a local declaration file for a non-scoped package is found, but that one for a scoped package (@<scope>/name) is not.

The test sample I've attached uses the @feathersjs/express scoped package to demonstrate the issue.

Note that the feathersjs__express.d.ts file below does contain the declare module 'feathersjs__express'; as specified in the error message.

Also note that the contents of feathersjs__express.d.ts are basically identical to the contents of feathers-mongoose.d.ts which is correctly found (and when remove produces a similar TS7016 error.

TypeScript Version: 2.9.0-dev.20180506

Search Terms:
TS7016: Could not find a declaration file for module

Code

├── package.json
├── src
│   ├── feathersjs__express.d.ts
│   ├── feathers-mongoose.d.ts
│   └── index.ts
├── tsconfig.json

index.ts

import { express } from '@feathersjs/express';
import { service } from 'feathers-mongoose';

feathers-mongoose.d.ts

declare module 'feathers-mongoose'
{
    function init(options: string): any;

    namespace init
    {
        export let service: (options: string) => any;
    }

    export = init;
}

feathersjs__express.d.ts

declare module 'feathersjs__express'
{
    function feathersExpress(feathersApp: string): any;

    namespace feathersExpress
    {
        export let express: (feathersApp: string) => any;
    }

    export = feathersExpress;
}

Zip file containing the sources (as in the tree above)
ts_bug_src.zip

Expected behavior:
No errors

Actual behavior:

src/index.ts:1:25 - error TS7016: Could not find a declaration file for module '@feathersjs/express'. '/home/mjl/Projects/riff/test/node_modules/@feathersjs/express/lib/index.js' implicitly has an 'any' type.
  Try `npm install @types/feathersjs__express` if it exists or add a new declaration (.d.ts) file containing `declare module 'feathersjs__express';`

1 import { express } from '@feathersjs/express';
                          ~~~~~~~~~~~~~~~~~~~~~

Playground Link:

Related Issues:

Metadata

Metadata

Assignees

Labels

BugA bug in TypeScriptDomain: Error MessagesThe issue relates to error messagingFixedA PR has been merged for this issueHelp WantedYou can do this

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions