JetBrains / js-graphql-intellij-plugin

GraphQL language support for WebStorm, IntelliJ IDEA and other IDEs based on the IntelliJ Platform.
https://jimkyndemeyer.github.io/js-graphql-intellij-plugin/
MIT License
879 stars 97 forks source link

Doesn't work with Yarn and js/ts config #676

Open nick4fake opened 1 year ago

nick4fake commented 1 year ago

I am using IDEA 2023.2 EAP, stable version also doesn't work.

There seems to be an issue with evaling config export with PNP due to loader interference:

java.lang.Throwable: file:///C:/data/projects/PROJECT_NAME/[eval1]:1
function printConfig(config) {

SyntaxError: Unexpected end of input
    at CustomizedModuleLoader.evalInstance (node:internal/modules/esm/loader:120:22)
    at new ModuleJob (node:internal/modules/esm/module_job:63:26)
    at CustomizedModuleLoader.eval (node:internal/modules/esm/loader:131:17)
    at node:internal/process/execution:51:55
    at loadESM (node:internal/process/esm_loader:36:13)
    at evalModule (node:internal/process/execution:51:28)
    at node:internal/main/eval_string:29:3

Node.js v20.2.0

    at com.intellij.lang.jsgraphql.javascript.config.GraphQLJavaScriptConfigLoader.completeExceptionally(GraphQLJavaScriptConfigLoader.kt:96)
    at com.intellij.lang.jsgraphql.javascript.config.GraphQLJavaScriptConfigLoader.load(GraphQLJavaScriptConfigLoader.kt:81)
    at com.intellij.lang.jsgraphql.ide.config.loader.GraphQLConfigLoader.readJs(GraphQLConfigLoader.kt:167)
    at com.intellij.lang.jsgraphql.ide.config.loader.GraphQLConfigLoader.readData(GraphQLConfigLoader.kt:127)
    at com.intellij.lang.jsgraphql.ide.config.loader.GraphQLConfigLoader.load(GraphQLConfigLoader.kt:29)
    at com.intellij.lang.jsgraphql.ide.config.GraphQLConfigProvider.reload(GraphQLConfigProvider.kt:380)
    at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:185)
    at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$13(CoreProgressManager.java:603)
    at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:678)
    at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:634)
    at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:602)
    at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:61)
    at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:172)
    at com.intellij.openapi.progress.util.BackgroundTaskUtil.runUnderDisposeAwareIndicator(BackgroundTaskUtil.java:360)
    at com.intellij.openapi.progress.util.BackgroundTaskUtil.runUnderDisposeAwareIndicator(BackgroundTaskUtil.java:338)
    at com.intellij.lang.jsgraphql.ide.config.GraphQLConfigProvider.scheduleConfigurationReload$lambda$22(GraphQLConfigProvider.kt:351)
    at com.intellij.util.concurrency.QueueProcessor.runSafely(QueueProcessor.java:252)
    at com.intellij.util.Alarm$Request.runSafely(Alarm.java:365)
    at com.intellij.util.Alarm$Request.run(Alarm.java:354)
    at com.intellij.util.concurrency.Propagation.contextAwareCallable$lambda$1(propagation.kt:235)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at com.intellij.util.concurrency.SchedulingWrapper$MyScheduledFutureTask.run(SchedulingWrapper.java:272)
    at com.intellij.util.concurrency.BoundedTaskExecutor.doRun(BoundedTaskExecutor.java:249)
    at com.intellij.util.concurrency.BoundedTaskExecutor.access$200(BoundedTaskExecutor.java:31)
    at com.intellij.util.concurrency.BoundedTaskExecutor$1.executeFirstTaskAndHelpQueue(BoundedTaskExecutor.java:227)
    at com.intellij.util.ConcurrencyUtil.runUnderThreadName(ConcurrencyUtil.java:218)
    at com.intellij.util.concurrency.BoundedTaskExecutor$1.run(BoundedTaskExecutor.java:215)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
    at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:702)
    at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:699)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
    at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1.run(Executors.java:699)
    at java.base/java.lang.Thread.run(Thread.java:833)

I am using Yarn PNP + ESM. I think there might be an issue with file import here: https://github.com/JetBrains/js-graphql-intellij-plugin/blob/master/src/main/com/intellij/lang/jsgraphql/javascript/config/GraphQLJavaScriptConfigLoader.kt#L169

nick4fake commented 1 year ago

Ok It seems like it might be related to Windows usage. I've created a small bat wrapper around node:

@echo off
(
echo %*
) > C:\data\test.txt
node %*

It gives me this:

PATH_TO_DIR\.yarn\releases\yarn-3.6.0.cjs node --input-type module --loader ts-node/esm -e "function printConfig(config) {

So it seems like multiline eval is somehow not supported with windows node interpreter?