Deno本地import_map无法递归生效?导入依赖后需重复配置原因
问题原因及解决思路
核心原因
Deno的import_map是当前运行项目的专属配置,不会自动继承或合并依赖项目的import_map:
- 单独运行
utils时,Deno加载的是utils目录下的import_map,能正确解析其中定义的模块别名、依赖映射,所以测试、构建正常。 - 当
server导入utils时,Deno是基于server的运行上下文工作的,只会读取server自己的import_map。如果utils代码中用到了它自己import_map里的定义(比如自定义别名@/xxx),而server的import_map里没有对应的映射规则,Deno就无法找到目标模块,因此会提示你添加相关配置。
另外,Deno刻意不自动合并依赖项目的import_map,是为了避免不同项目的映射规则冲突(比如两个项目定义了相同别名但指向不同路径),把配置控制权交给开发者。
解决方法
- 手动将
utils的import_map中,server运行时需要用到的映射项,复制到server的import_map.json里。 - 如果两个项目有大量公共依赖或映射规则,可以抽离出一个公共的
import_map文件,然后在两个项目的import_map中通过嵌套引用的方式使用,比如:// server/import_map.json { "imports": "./common_import_map.json" }
内容的提问来源于stack exchange,提问作者ThomasReggi
相关产品推荐
相关产品推荐

