Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

error TS2742: The inferred type of 'default' cannot be named without a reference #141

Open
Aurion72 opened this issue Jul 13, 2023 · 4 comments
Labels
bug Something isn't working

Comments

@Aurion72
Copy link

Aurion72 commented Jul 13, 2023

Im trying to pnpm prepack a nuxt3 module with a package which exports a simple object and its types file.

1 - In the playground/node_modules/myPackage/dist

index.d.ts :

type Params = string[];

declare const endpoints: {
    abc: (q: Params) => string;
};

export { Params, endpoints as default };

index.js :

// src/index.ts
var endpoints = {
  abc: (q) => "test"
};
var src_default = endpoints;
export {
  src_default as default
};

2 - In the playground/app.config.ts

import endpoints from "myPackage";

export default {
    endpoints
};

3 - In the module, src/runtime/plugin.ts :

import { defineNuxtPlugin, useAppConfig } from "#imports";

export default defineNuxtPlugin(() => {
   
  return {
    provide: {
      backend: useAppConfig().endpoints, 
    },
  };
});

Then, i run pnpm prepack and i always have this error :

ℹ Building my-module                                                                                                                                                                                                                                  12:16:16 PM
src/runtime/plugin.ts(3,1): error TS2742: The inferred type of 'default' cannot be named without a reference to '../../playground/node_modules/@aurionsarl/auberdog-pension-api/dist'. This is likely not portable. A type annotation is necessary.
src/runtime/plugin.ts(3,1): error TS2742: The inferred type of 'default' cannot be named without a reference to '../../playground/node_modules/@aurionsarl/auberdog-pension-api/dist'. This is likely not portable. A type annotation is necessary.

Error [RollupError]: Failed to compile. Check the logs above.
    at error (file:///home/tony/projects/testmodule/node_modules/.pnpm/rollup@3.26.2/node_modules/rollup/dist/es/shared/node-entry.js:2245:30)
    at Object.error (file:///home/tony/projects/testmodule/node_modules/.pnpm/rollup@3.26.2/node_modules/rollup/dist/es/shared/node-entry.js:25139:20)
    at Object.error (file:///home/tony/projects/testmodule/node_modules/.pnpm/rollup@3.26.2/node_modules/rollup/dist/es/shared/node-entry.js:24262:42)
    at generateDtsFromTs (file:///home/tony/projects/testmodule/node_modules/.pnpm/rollup-plugin-dts@5.3.0_rollup@3.26.2_typescript@5.1.6/node_modules/rollup-plugin-dts/dist/rollup-plugin-dts.mjs:1697:30)
    at Object.transform (file:///home/tony/projects/testmodule/node_modules/.pnpm/rollup-plugin-dts@5.3.0_rollup@3.26.2_typescript@5.1.6/node_modules/rollup-plugin-dts/dist/rollup-plugin-dts.mjs:1706:38)
    at file:///home/tony/projects/testmodule/node_modules/.pnpm/rollup@3.26.2/node_modules/rollup/dist/es/shared/node-entry.js:25332:40
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5) {
  id: '/home/tony/projects/testmodule/src/module.ts',
  hook: 'resolveId',
  code: 'PLUGIN_ERROR',
  plugin: 'commonjs--resolver',
  watchFiles: [
    '/home/tony/projects/testmodule/src/module.ts',
    '/home/tony/projects/testmodule/src/runtime/plugin.ts'
  ]
}
 ELIFECYCLE  Command failed with exit code 1.

And the error disappears if i replace the code in the playground/node_modules/myPackage/dist by this one :

type Params = string; // replace string[] to string

declare const endpoints: {
    abc: (q: Params) => string;
};

export { Params, endpoints as default };
@Aurion72
Copy link
Author

@danielroe It seems to be related to this ticket egoist/tsup#624

@agenordebriat
Copy link

Running prepack on my module was fine on 3.6.3, but breaks on 3.6.4 with this same type of error.
Same code, just bumped the deps.

@RomanSkrypnik
Copy link

Facing the same issue with custom interfaces

@danielroe
Copy link
Member

danielroe commented Apr 25, 2024

I think there is a way we can solve this within @nuxt/module-builder but until then you can resolve (with the latest version - and make sure you have mkdist@^1.5.1) by importing from the library which can't be named.

Something like this would likely work...

+ import type {} from 'myPackage'
  import { defineNuxtPlugin, useAppConfig } from "#imports";
  
  export default defineNuxtPlugin(() => {
     
    return {
      provide: {
        backend: useAppConfig().endpoints, 
      },
    };
  });

See microsoft/TypeScript#58176 (comment) for more about why this is happening.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

4 participants