VS Code: "Not prefixed with... and not in import map from ..."
saeho opened this issue · comments
Version: Deno 1.14.3
Hello,
I have a VS code issue where import-map configured NPM packages are showing as errors. I saw a few threads like this but none of the threads I read solved my problem (even though the issues were very similar.
Here's an example:
On the Server Deno repo
This will show as an error in VS Code ("not prefixed with / and not in import map from..."):
import { ApolloServer } from '@apollo/server';
This is my deno.json:
"imports": {
"@apollo/server": "npm:@apollo/server@^4.10.4",
"graphql": "npm:graphql@^16.8.1"
}
However, this exact imports map works in my Fresh Deno app repo and VS Code does not complain.
Is the deno.json
at the root of your repo? Do you have a repo I can take a look at?
Yes, deno.json is at the root, and deno.json file works properly as it should. All the imports does the job properly, it's just VS Code that fails.
You can take a look at the repo but it's private. Can I give you private access?
Sure, can you invite @nayeemrmn and @nathanwhit?
If you're using deno.enablePaths
ensure it contains the deno.json
.
Also, try running deno upgrade
.
Invited both Nathanwhit and Nayeermrmn.
Also tried deno upgrade, it didn't change anything for me.
@saeho I don't see anything wrong with it, it should work. What does the output panel say when you start the language server? Open it by clicking on the Deno part of the status bar at the bottom right.
@saeho I don't see anything wrong with it, it should work. What does the output panel say when you start the language server? Open it by clicking on the Deno part of the status bar at the bottom right.
It says:
Refreshing configuration tree...
Resolved Deno configuration file: "file:///Users/saeho/Documents/apps/app-server/deno.json"
Resolved lockfile: "file:///Users/saeho/Documents/apps/app-server/deno.lock"
Resolved import map from configuration file
Resolved Deno configuration file: "file:///Users/saeho/Documents/apps/app-web/deno.json"
Resolved import map from configuration file
Server ready.
Error caching: Relative import path "preact/jsx-runtime" not prefixed with / or ./ or ../ and not in import map from "data:application/typescript;base64,aW1wb3J0ICdwcmVhY3QvanN4LXJ1bnRpbWUnOw=="
at data:application/typescript;base64,aW1wb3J0ICdwcmVhY3QvanN4LXJ1bnRpbWUnOw==:1:8
```
@saeho The project folder you're using there is above the one you gave us access to. What's the path of your project root? Are you using a multiroot workspace? Currently we don't have full support for monorepos with multiple deno.json
s
If your project root is file:///Users/saeho/Documents/apps/
, I suggest having a file:///Users/saeho/Documents/apps/deno.json
which has all the mappings from both projects.
Path of the project is "file:///Users/saeho/Documents/apps/app-web/" and "file:///Users/saeho/Documents/apps/app-web/deno.json" is the correct path. And there is only 1 deno.json file.
I changed the path name and changed it to "app-web" instead of "name"
@saeho The project folder you're using there is above the one you gave us access to. What's the path of your project root? Are you using a multiroot workspace? Currently we don't have full support for monorepos with multiple
deno.json
sIf your project root is
file:///Users/saeho/Documents/apps/
, I suggest having afile:///Users/saeho/Documents/apps/deno.json
which has all the mappings from both projects.
Can you clarify what multiroot workspace is?
I'm using VS Code and i have 2 repos on the side so i can switch between 2 repos without changing VS Code tabs.
But the 2 repos are separate and not connected in any way.
I'm using VS Code and i have 2 repos on the side so i can switch between 2 repos without changing VS Code tabs.
Okay, yeah that's the issue. This is a multi-root workspace and they share a language server. Only the deno.json
from your topmost project will be used for both currently. You can temporarily merge your other import map into that one.
Okay, that explains it all then.
Thank you.
A future update for this feature would be greatly appreciated.