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

v10 isn't loading the type file correctly #492

Closed
nicholasgriffintn opened this issue Apr 29, 2024 Discussed in #491 · 12 comments
Closed

v10 isn't loading the type file correctly #492

nicholasgriffintn opened this issue Apr 29, 2024 Discussed in #491 · 12 comments
Labels

Comments

@nicholasgriffintn
Copy link
Member

Discussed in #491

Originally posted by tyler-g April 29, 2024

Summary

Hey all, we saw this was already mentioned for the breaking change in v10:

v10.0.0
Potentially Breaking Changes
SQS Consumer has been transitioned to use ESM in its codebase, in order to support this, we have had to change how we deploy the package in order to build both ESM and CJS versions of the package.

This may cause issues with your software, if it does, please let us know.

This has forced us to be stuck on v9 because on v10 it will not find the type index file in sqs-consumer package. Wanted to check if there is any follow up to this that will eventually let us upgrade, or if we'll be stuck on v9. Thanks

Example

No response

@kibertoad
Copy link

Yup, this breaks for CommonJS import resolution:

Error: test/publishers/SnsPermissionPublisher.spec.ts(7,26): error TS2307: Cannot find module 'sqs-consumer' or its corresponding type declarations.
  There are types at '/home/runner/work/message-queue-toolkit/message-queue-toolkit/node_modules/sqs-consumer/dist/types/index.d.ts', but this result could not be resolved under your current 'moduleResolution' setting. Consider updating to 'node16', 'nodenext', or 'bundler'.
Error: ../sqs/lib/sqs/AbstractSqsConsumer.ts(19,26): error TS2307: Cannot find module 'sqs-consumer' or its corresponding type declarations.
  There are types at '/home/runner/work/message-queue-toolkit/message-queue-toolkit/node_modules/sqs-consumer/dist/types/index.d.ts', but this result could not be resolved under your current 'moduleResolution' setting. Consider updating to 'node16', 'nodenext', or 'bundler'.

Looks like dual-publishing is not setup correctly.

@nicholasgriffintn
Copy link
Member Author

Yup, we seem to have some sort of issue going on, one that is on the list to try to figure out when I have the time, for now, it's probably best to stick to v9 if you are getting these errors, in my testing, it did load for common js, but it seems I didn't hit every use case.

I'm not sure how to do that / if that's actually possible.

One avenue may be that we need to add main and types back to the package json, I'm still researching though.

@nicholasgriffintn
Copy link
Member Author

I have published a canary version: [email protected] that adds main and types back, I hoping this is solution, not fully tested yet though as it is a bit late and back to the day job tomorrow, would be great if people could try it and let us know if it does the job or not.

@trevor-brandt
Copy link

@nicholasgriffintn Your canary version worked for us.

We attempted to update from v9.x to v10.1.0 and were getting the following error:

error TS2307: Cannot find module 'sqs-consumer' or its corresponding type declarations.
  There are types at '[redacted]/sqs-consumer/dist/types/index.d.ts', but this result could not be resolved under your current 'moduleResolution' setting. Consider updating to 'node16', 'nodenext', or 'bundler'.

Using 10.2.0-canary.0, the error is gone and the project builds correctly.

@nicholasgriffintn
Copy link
Member Author

nicholasgriffintn commented Apr 30, 2024

Awesome, I've released it now as 10.2.0. Will leave this open in case it didn't fix it, and will close later if it did.

@kibertoad
Copy link

@nicholasgriffintn Thank you, it works now!

@trevor-brandt
Copy link

@nicholasgriffintn 10.2.0 works for an old project (hooray!), but when I use it in a project with a more recent tsconfig, it breaks that project (oh no!).

10.1.0 fails but 10.2.0 works with the error I mentioned above when we had these compilerOptions set:

{
  "compilerOptions": {
    "target": "es2021",
    "module": "commonjs",
    "moduleResolution": "node",
    "declaration": true,
    "outDir": "dist",
    "esModuleInterop": true,
    "forceConsistentCasingInFileNames": true,
    "resolveJsonModule": true,
    "skipLibCheck": true,
    "strict": false,
  },
  "exclude": ["node_modules", "dist"]
}

However, in another project with the following tsconfig settings, 10.1.0 works but now 10.2.0 breaks:

{
  "compilerOptions": {
    "target": "es2022",
    "module": "Node16",
    "declaration": true,
    "outDir": "dist",
    "esModuleInterop": true,
    "forceConsistentCasingInFileNames": true,
    "resolveJsonModule": true,
    "skipLibCheck": true,
    "strict": false,
  },
  "exclude": ["node_modules", "dist"]
}

The error we get with 10.2.0 for the above tsconfig:

error TS1479: The current file is a CommonJS module whose imports will produce 'require' calls; however, the referenced file is an ECMAScript module and cannot be imported with 'require'. Consider writing a dynamic 'import("sqs-consumer")' call instead.
  To convert this file to an ECMAScript module, change its file extension to '.mts', or add the field `"type": "module"` to '[redacted]/package.json'.

import { Consumer } from 'sqs-consumer';

Sorry, I know this must be a pain! There might be settings we can change to try to rectify it, but this isn't an issue we have with the other libs we import, so I'm guessing it won't just be me.

@nicholasgriffintn
Copy link
Member Author

nicholasgriffintn commented Apr 30, 2024

@trevor-brandt Sorry, not sure I'm able to replicate, we have a few examples going here, they all seem to be loading up as expected:

https://github.com/bbc/sqs-consumer-starter/tree/main/examples

Would you mind forking and providing an example according to the closest one to your setup please? This is one I've setup using your tsconfig: https://github.com/bbc/sqs-consumer-starter/tree/main/examples/ts-commonjs-node16

@nicholasgriffintn
Copy link
Member Author

Update: I've published 10.2.1 just now, that exports type files specific for esm and cjs, ran it through this, seems to be happy: https://arethetypeswrong.github.io/?p=sqs-consumer

Maybe that version might fix the issue for you?

@trevor-brandt
Copy link

@nicholasgriffintn , I started taking a look at your starter example and couldn't repro until I noticed you're using 10.2.1. If I bump my patch version from 10.2.0 to 10.2.1 everything is great!

I'm able to repro with a couple changes to your ts-commonjs-node16 if I revert to 10.2.0 (we're using import instead of require in our code), but since the latest is working for me, I'm good if you're good.

Thanks for all your efforts to get this stuff ironed out!

@trevor-brandt
Copy link

@nicholasgriffintn And I just noticed your comment about 10.2.1, so yep! You were right on it. Thanks again!

Copy link

github-actions bot commented Jun 2, 2024

This issue has been closed for more than 30 days. If this issue is still occuring, please open a new issue with more recent context.

@github-actions github-actions bot locked as resolved and limited conversation to collaborators Jun 2, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

No branches or pull requests

3 participants