Current behavior
prisma deploy
is not generating files
Reproduction
1) install typescript-basic boilerplate
2) delete generated files
3) prisma deploy
Expected behavior?
Should see generated files again
Thanks for the bug report!
It looks like the problem is that prisma-binding
has been upgraded to 2.x
, but graphql prepare
is still used instead of graphql codegen
.
We'll update this soon!
The latest boilerplate is using graphql codegen
and it's still not generating files.
I have tried this with prisma-binding
still on version 1.5.19
and graphql prepare
and it still doesnt work.
Versions:
prisma/1.8.3 (windows-x64) node-v8.11.2
The problem is that .graphqlconfig.yml
is not correctly configured :slightly_smiling_face:
projects:
app:
schemaPath: src/schema.graphql
extensions:
endpoints:
default: http://localhost:4000
database:
schemaPath: src/generated/prisma.graphql
extensions:
prisma: database/prisma.yml
prepare-binding:
output: src/generated/prisma.ts
generator: prisma-ts
What is incorrect in there? Is there something I can change that will make this work?
To clarify, when I run prisma deploy
it does show this outcome
post-deploy:
Running graphql get-schema --project database β
Running graphql prepare β
but no files are generated.
If I run those commands each on their own in the cmd prompt, that does generate the files.
Sorry for the confusion, the code generation for prisma-binding 2.0 works slightly differently as it's not using the graphql prepare
but the new graphql codegen
command instead.
You basically need to update your prisma.yml
and the .graphqlconfig.yml
:
prisma.yml
# ... other properties
hooks:
post-deploy:
- graphql get-schema
- graphql codegen
.graphqlconfig.yml
projects:
myapp:
schemaPath: src/generated/prisma.graphql
extensions:
prisma: prisma/prisma.yml
codegen:
- generator: prisma-binding
language: typescript
output:
binding: src/generated/prisma.ts
Let me know if you have any further questions π
You can also find more info in the docs here.
@nikolasburk
I'm using prisma-binding
version 1.5.19
with graphql prepare
in one project
and prisma-binding
version 2.0.1
with graphql codegen
in another place and
am getting the same results for both projects.
The hooks run after prisma deploy
but do not generate any files or changes unless I run them manually.
I believe this is a windows issue because other people using linux have told me that this works for them.
Hmm, I see. In that case I'm reopening the issue for someone to look into that specific case. Thanks @yocheved π
@yocheved can you provide reproduction repositories for both cases? :slightly_smiling_face:
I was able to reproduce this directly from the typescript-basic boilerplate.
Yes @blocka, I also was able to reproduce, but we adjusted the typescript-basic boilerplate since you reported the error :slightly_smiling_face: Can you still reproduce the issue?
Sorry for the delay,
It is still an issue.
i have the same problem :(
I believe prisma deploy is not running graphql get-schema --project database
properly. Or maybe it's not passing the users .env flags. But regardless, if I run prisma deploy
then manually run graphql get-schema --project database --dotenv=myenvpath
, it generates the file properly. So is this just a script error?
@marktani This problem still persists after latest upgrades to boilerplate projects:
Getting the following warnings
warning command prepare both exists in plugin C:\project\node_modules\graphql-cli-prepare and is shipped with the graphql-cli.
Basically that leaves us not being able to migrate to 1.7+ right now.
.graphqlconfig:
projects:
database:
schemaPath: src/generated/prisma.graphql
extensions:
prisma: database/prisma.yml
codegen:
- generator: prisma-binding
language: typescript
output:
binding: src/generated/prisma.ts
prisma.yml
# the full uri to the prisma endpoint
endpoint: ${env:PRISMA_ENDPOINT}
# the file path pointing to your data model
datamodel: datamodel.graphql
# to disable authentication uncomment below
secret: ${env:PRISMA_SECRET}
# seed your service with initial data
seed:
import: ${env:PRISMA_SEED}
# Download the GraphQL schema of the Prisma API into
# `src/generated/prisma.graphql` (as specfied in `.graphqlconfig.yml`).
# Then generate the corresponding TypeScript definitions into
# `src/generated/prisma.ts` (also specfied in `.graphqlconfig.yml`)
# with `graphql codegen` .
hooks:
post-deploy:
- graphql get-schema --project database
- graphql codegen --project database
folder structure:
database/prisma.yml
database/datamodel.graphql
.graphqlconfig
Thanks for your feedback @ntziolis! Can you share your .graphqlconfig.yml
and the hooks from prisma.yml
?
@marktani Was in the rpocess of updating my post
Does it work if you run graphql codegen
directly from the command line, and not as a hook?
Nope, same result reports success + warning. Even tried with specific project but same result:
The issue was as suggested graphql-cli-prepare
, once i manually deleted the node module folder for this package creation of bindings ran smoothly ... sadly now other pieces break where graphql cli prepare was being used.
I will provide an update once I figure out how to remove the dep to graphql-cli-prepare
Basically im out of ideas. My initial report that I was able to create the file after removing the prepare lib was FALSE. All it did was remove the error message. still no prisma.ts though.
Here is is a step by step to understand what changes when:
yarn install
graphql codegen
==> no file gets created, and 'prepare' error is shownrimraf node_modules\graphql-cli-prepare\
graphql codegen
=> file still does NOT get created, but error is goneI have taken some time to summarize this issue as I think this are multiple:
prisma deploy
does not properly trigger running scripts (at least on windows)graphql get-schema' works when manually executed
graphql codegen `command does NOT work on windows when manually executedSummary
I think we can live with no 3 for a bit, but NOT with No 4 as this basically requires windows folks to stay below version 1.7.
Thanks for the summary, @ntziolis. We will work on this issue soon! :slightly_smiling_face:
One note, graphql codegen
is tied to prisma-binding
version 2.x
, while graphql prepare
is tied to prisma-binding
version 1.5.x
.
Neither is tied to the prisma
version itself, so if you want to upgrade to prisma
1.7+, you can do so on Windows as well, if you use prisma-binding
version 1.5.x
and graphql prepare
:slightly_smiling_face:
Thank you for the workaround.
I am able to replicate this issue (prisma-binding
2.0 with graphql codegen
) on windows, and on mac machines when I remove the node_modules
folder.
I have created an issue with related findings.
@divyenduz, I am using prisma-binding
version 1.5.19
and prisma
version 1.8.3
on Windows.
When I run prisma deploy
, it does run the hooks and gives this output
post-deploy:
Running graphql get-schema --project database β
Running graphql prepare β
but the files dont change.
When I run each of those hooks manually, they give different output:
graphql get-schema --project database
warning command prepare both exists in plugin E:\GitHub\team-fundraising\node_modules\graphql-cli-prepare and is shipped with the graphql-cli.
The plugin is being ignored.
project database - No changes
AND
graphql prepare
warning command prepare both exists in plugin E:\GitHub\team-fundraising\node_modules\graphql-cli-prepare and is shipped with the graphql-cli.
The plugin is being ignored.
β Bindings for project database written to src/generated/prisma.ts
and files do get generated
Same issue here
Prisma deploy doesn't generate files on mac.
My graphqlconfig.yml content is
```
prisma:
schemaPath: src/generated/prisma.graphql
extensions:
prisma: prisma/prisma.yml
**prisma.yml** is
hooks:
post-deploy:
- graphql get-schema --project prisma
```
and I run deploy command, there is no file named 'prisma.graphql' created.
@marktani - Can you explain that workaround from your previous comment for people who've just started with the advanced boilerplate and prisma 1.8
and prisma-binding 2.x.x
? What should the post-deploy hook look like, and what packages and versions should be used while we wait for a fix here?
@jhalborg Your link takes you too av-cables.dk!
@williamluke4 - Sorry, my bad π Fixed
I solve my problem with command
npm install -g graphql-cli
then I deploy my project,show that:
project prisma - Schema file was created: src/generated/prisma.graphql
@zjyonline that didn't fix it for me
@zjyonline didn't fix it for me either.
I found that hooks command run in this file in my Mac ,
/usr/local/lib/node_modules/prisma/node_modules/prisma-cli-core/dist/commands/deploy/index.js
about lin4 400,
case 11:
hooks = this.definition.getHooks('post-deploy');
if (hooks.length > 0) {
this.out.log("\n" + chalk_1.default.bold('post-deploy') + ":");
}
for (_i = 0, hooks_1 = hooks; _i < hooks_1.length; _i++) {
hook = hooks_1[_i];
splittedHook = hook.split(' ');
this.out.action.start("Running " + chalk_1.default.cyan(hook));
child = **npm_run_1.spawnSync(splittedHook[0], splittedHook.slice(1));**
stderr = child.stderr && child.stderr.toString();
if (stderr && stderr.length > 0) {
this.out.log(stderr);
}
stdout = child.stdout && child.stdout.toString();
if (stdout) {
this.out.log(stdout);
}
this.out.action.stop();
}
return [2 /*return*/];
So I found maybe I forget to install something about 'graphql-cli' ?
@yocheved @ntziolis read this file maybe help.
Any ETA on this? It's blocking half our development team π
Im near death certain itβs related to some versions of node spawning not working properly on Windows or only with different params. I ran into an issue like that some time ago. Iβll check and report back thx for pointing to the right place.
@ntziolis : Hello, you are kinda correct, we are working on a solution and we should be able to release it soon.
@jhalborg: soon, hopefully in a few hours!
This is released in graphql-cli
version 2.6.1.
Please update the graphql-cli
and try out the graphql codegen
command.
This is how the graphql config should look like
Wow 20min to close it. Will test as soon as in front of pc!
Just tested with "prisma-binding": "^2.0.2"
and "graphql-cli": "^2.16.1"
and is working! Thanks guys
I can confirm that graphql codegen
now works with [email protected]
+ [email protected]
. One issue closed, one left to go.
Updating the summary I made previously:
graphql codegen
command does NOT work on windowsprisma deploy
does not actually execute the post deployment scripts (at least on windows) while it claims the scripts were successfully executedAssuming the first error was in the way graphql codegen
spawns apollo-codegen
. It should basically be the same fix for prisma deploy which spawns graphql get-schema
+ graphql codegen
.
@ntziolis : Can you please share your graphql config and prisma.yml
file and prisma cli version via prisma --version
?
The latest prisma
cli requires hooks to be defined in prisma.yml
to add graphql get-schema
and graphql codegen
post deploy.
P.S. I observed that you have shared the relevant files already, trying to replicate on windows.
@divyenduz I understand the changes and have implemented them @marktani has already double checked them above.
My prisma version is:
prisma/1.8.3 (windows-x64) node-v8.9.4
To be clear:
Here is what my console looks like:
# prisma deploy
Deploying service `circula` to stage `dev` to server `local` 167ms
Service is already up to date.
post-deploy:
Running graphql get-schema --project database β
Running graphql codegen --project database β
=> No files get created, neither prisma.ts nor schema.graphql
Updated Notes:
πThis is released in prisma cli version 1.9. π
Please download using npm install -g prisma
@divyenduz Right now this does not work, when installing prisma it only installs 1.8.3. npm side says this is the most recent version. did something go wrong during publishing to npm?
Yes, we're looking into publishing 1.9 to npm tomorrow.
When you create a release it should be published to npm at the same time as part of your deployment process always
Yes, we're setting up an automatic publishing flow as you suggested :slightly_smiling_face:
I still get the error message, but everything worked well.
I'm on Windows 10
Here the error message
Romsy@ROMSY-PC MINGW64
$ prisma deploy
Deploying service `default` to stage `default` to server `default` 48ms
Service is already up to date.
post-deploy:
warning command prepare both exists in plugin pathsomewhere\node_modules\graphql-cli-prepare and is shipped with the graphql-cli.
The plugin is being ignored.
Running graphql get-schema --project database...
project database - No changes
Running graphql get-schema --project database β
warning command prepare both exists in plugin pathsomewhere\node_modules\graphql-cli-prepare and is shipped with the graphql-cli.
The plugin is being ignored.
Running graphql codegen β
Here's my dep and devDep
"dependencies": {
"bcryptjs": "2.4.3",
"graphql-yoga": "1.14.10",
"jsonwebtoken": "8.3.0",
"prisma-binding": "2.1.0"
},
"devDependencies": {
"@types/bcryptjs": "2.4.1",
"dotenv-cli": "1.4.0",
"graphql-cli": "2.16.3",
"nodemon": "1.17.5",
"npm-run-all": "4.1.3",
"prisma": "1.10.2",
"rimraf": "2.6.2",
"ts-node": "6.2.0",
"typescript": "2.9.2"
}
@rohmanhm I also get that warning but it everything still works as expected
I am still getting this with prisma 1.15.3 & graphql-cli 2.16.5 on OSX.
If I run PRISMA_ENDPOINT=http://localhost:4466 prisma deploy
:
Deploying service `default` to stage `default` to server `local` 45ms
Service is already up to date.
post-deploy:
Running graphql get-schema --project database β
but server/api/database/generated.graphql
isn't created.
If I run PRISMA_ENDPOINT=http://localhost:4466 graphql get-schema --project database
it generates it, fine.
.graphqlconfig.yml:
projects:
app:
schemaPath: server/api/schema/*.graphql
extensions:
endpoints:
default: http://localhost:8000
database:
schemaPath: server/api/database/generated.graphql
extensions:
prisma: server/api/database/prisma.yml
server/api/database/prisma.yml:
endpoint: ${env:PRISMA_ENDPOINT}
datamodel: datamodel.graphql
seed:
import: seed.graphql
hooks:
post-deploy:
- graphql get-schema --project database
I managed to get it to work right by installing graphql "^0.13.0", instead of "^0.14.0".
I managed to get it to work right by installing graphql "^0.13.0", instead of "^0.14.0".
Same for me. It works when I change the grapqhl version
cannot get it to work even when downgrading graphql version as suggested
i can confirm version 0.14.0 is not working to generate schema
I also have the same problem, running on "graphql": "^0.13.2"
I think i found a working solution (works with graphql: v14)
add this to your prisma.yml file
hooks:
post-deploy:
- graphql get-schema -p prisma
- prisma generate
generate:
- generator: graphql-schema
output: ./src/generated/
I'm following the GraphQL tutorial from How To GraphQL and when I run prisma deploy
on Windows, it doesn't generate the schema.
Output as follows:
Deploying service
XXX-node
to stagedev
to serverprisma-eu1
186ms
Service is already up to date.
post-deploy:
spawnSync graphql ENOENT
Running graphql get-schema --project db Γ
I tried to change the post deploy code in config file in different ways but nothing seemed to work. Even simple echo messages are not being executed. I also tried adding a silent command to create a file but even that wasn't executed.
My observation is that this is a scripting issue and the arguments are not properly passed to powershell
or cmd
for execution.
Workaround is to run graphql get-schema --project db
yourself in a terminal, which does the job.
My environment and version is latest, created and fetched/installed today.
I get this issue too.
@saifali96 Have you tried with git bash
on windows? I'm using git bash
on windows. Everything works well, except it just throws the error messages.
https://github.com/prisma/prisma/issues/2494#issuecomment-400525610
@rohmanhm nice idea, I changed my laptop and almost forgot about mingw. Thanks I'll use that.
But given the number of comments on this issue, I think this should be addressed in the next release.
Cheers!
Did using git bash work for you @saifali96? I'm having the same problem, thought I had it working but now I'm just getting same output as you had in cmd and git bash.
@SeanK1191 no. Unfortunately it doesn't work with git bash
either.
For now, only workaround is to run the command yourself in the terminal.
Can any one of you please create a new issue for this? It is easily possible for newer comments on closed issues to be missed π
Thanks!
@divyenduz I believe issue #3491 is the same or related to the issue mentioned here.
@saifali96 I'm also doing the HowToGraphQL tutorial, gonna remove the post hook and use this npm script for now, hope it helps:
"prisma-deploy": "prisma deploy & graphql get-schema --project database"
@SeanK1191 I tried using the above script in the prisma.yml
file but it doesn't work. the post-deploy hook doesn't get executed at all.
My observation is npm-run
above 4.x is broken on Windows envs.
#3491 should fix it.
Thanks all for reporting this, in the mean time we will downgrade npm-run
shortly:- https://github.com/prisma/prisma/pull/3517
Until this is released, if you use yarn
a workaround is to add this to your package.json:
"resolutions": {
"npm-run": "4.1.2"
}
This is already available in the latest beta, please install it via npm install -g prisma@beta
I believe prisma deploy is not running
graphql get-schema --project database
properly. Or maybe it's not passing the users .env flags. But regardless, if I runprisma deploy
then manually rungraphql get-schema --project database --dotenv=myenvpath
, it generates the file properly. So is this just a script error?
you are amazing.
Changing graphql get-schema --project database
to just graphql get-schema
fixed it for me, though I'm very new to graph-ql still so it could just be due to an improperly configured project.
I have the same issue. I'm working on ubuntu 18.10
The output is:
post-deploy:
Running graphql get-schema β
Running graphql codegen β
but the generated file is never updated.
I have followed all the steps in this thread.
If anybody is still having trouble adding .graphql
to the end of your output worked for me.
endpoint: ${env:PRISMA_ENDPOINT}
datamodel: datamodel.prisma
# secret: ${env:PRISMA_SECRET}
generate:
- generator: graphql-schema
output: src/generated/prisma-client.graphql
hooks:
post-deploy:
- prisma generate
Most helpful comment
@divyenduz I understand the changes and have implemented them @marktani has already double checked them above.
My prisma version is:
prisma/1.8.3 (windows-x64) node-v8.9.4
To be clear:
Here is what my console looks like:
=> No files get created, neither prisma.ts nor schema.graphql
Updated Notes: