fastify-cli
fastify-cli copied to clipboard
generate-swagger doesn't work with typescript code
Prerequisites
- [X] I have written a descriptive issue title
- [X] I have searched existing issues to ensure the bug has not already been reported
Fastify version
4.15.0
Plugin version
No response
Node.js version
v19.7.0
Operating system
macOS
Operating system version (i.e. 20.04, 11.3, 10)
Monterey (12.5.1)
Description
I'm trying to generate swagger using fastify-cli for a Typescript project and getting an error SyntaxError: Cannot use import statement outside a module
.
Steps to Reproduce
- Create a new Fastify project from template:
$ fastify generate --lang=ts test-project
-
Run
npm install
-
Add
@fastify/swagger
-npm install @fastify/swagger
-
In the
src/app.ts
add:
+ import swagger from '@fastify/swagger';
// [skipped]
const app: FastifyPluginAsync<AppOptions> = async (
fastify,
opts
): Promise<void> => {
// Place here your custom code!
+ fastify.register(swagger, {});
// [skipped remaining]
- Try generating swagger:
$ fastify generate-swagger src/app.ts
- Observe the error
import { join } from 'path';
^^^^^^
SyntaxError: Cannot use import statement outside a module
at internalCompileFunction (node:internal/vm:73:18)
at wrapSafe (node:internal/modules/cjs/loader:1195:20)
at Module._compile (node:internal/modules/cjs/loader:1239:27)
at Module._extensions..js (node:internal/modules/cjs/loader:1329:10)
at Module.load (node:internal/modules/cjs/loader:1133:32)
at Module._load (node:internal/modules/cjs/loader:972:12)
at Module.require (node:internal/modules/cjs/loader:1157:19)
at require (node:internal/modules/helpers:119:18)
at requireServerPluginFromPath (/Users/anton/.nvm/versions/node/v19.7.0/lib/node_modules/fastify-cli/util.js:79:20)
at async runFastify (/Users/anton/.nvm/versions/node/v19.7.0/lib/node_modules/fastify-cli/generate-swagger.js:60:12)
Expected Behavior
No response
Thanks for reporting! Would you like to send a Pull Request to address this issue? Remember to add unit tests.
Thanks for reporting! Would you like to send a Pull Request to address this issue? Remember to add unit tests.
I would like try it...
Go for it!
any updates here?
@mcollina @aehtatsirk @smaant I am very sorry for the delay, I ended up feeling discouraged and sad for not knowing how to do it at the time, but after receiving the email for this comment, I put my brain to work and solved this #641 I hope I helped
Personally. I just called generate-swagger
with the compiled js file. Like how you use fastify start
with the compiled JS file. fastify-cli
itself has no native TypeScript support so needs a separate build step. It will need to integrate ts-node
or preferably tsx
, which has far less problems than ts-node
for this, which is a separate feature IMHO.