VSCode无法为npm link关联的本地包正确提供导入提示如何解决
解决方案
这个问题是VSCode内置的JavaScript/TypeScript语言服务对带exports字段的ES模块软链包的路径解析规则和Node运行时不一致导致的,按以下步骤配置即可修复:
步骤1:修改myModule包的package.json配置
在现有配置基础上补充typesVersions字段,该字段会告诉VSCode的语言服务子路径导入对应的实际源码位置,纯JS项目也可正常使用:
{ "type": "module", "exports": { "./*": "./src/*" }, // 新增以下配置 "typesVersions": { "*": { "./*": ["./src/*"] } } }
步骤2:修改server项目的jsconfig.json配置
调整路径映射、扫描范围和模块解析规则,确保VSCode可以正确识别link过来的myModule包:
{ "compilerOptions": { "baseUrl": ".", // 匹配ES模块的Node解析规则 "module": "NodeNext", "moduleResolution": "NodeNext", "allowJs": true, "paths": { "myModule/*": ["./node_modules/myModule/src/*"] } }, // 要把link的myModule源码纳入扫描范围 "include": ["src/**/*", "node_modules/myModule/src/**/*"], // 排除其他node_modules,仅保留myModule "exclude": ["node_modules/*", "!node_modules/myModule"] }
步骤3:重启VSCode语言服务
配置修改完成后,按快捷键Ctrl+Shift+P(Mac系统为Cmd+Shift+P),执行命令TypeScript: Restart TS Server,等待服务重启完成即可生效。
可选优化(解决相对路径导入问题)
如果依然出现相对路径的导入提示,可打开VSCode设置,搜索javascript.preferences.importModuleSpecifier,将值修改为non-relative,即可强制优先生成myModule/xxx.js格式的导入路径。
内容的提问来源于stack exchange,提问作者Oli414
相关产品推荐
相关产品推荐

