我遇到过TypeScript Webpack在符号链接文件夹中无法正确解析依赖关系的问题.我有这样的文件结构:
- main -- index.ts -- package.json -- webpack.config.js - shared-lib -- services --- session.ts -- package.json
在main中有一个依赖于shared-lib @ file:../ shared-lib,结果npm会在node_modules中为它创建符号链接.
在shared-lib中,我对lodash-es有依赖,而且我在main中有它,但是在项目中应该只有一个lodash-es的东西,我想保留在main中,结果当我尝试构建项目我得到类似的东西:
[at-loader]中的错误../shared-lib/index.ts:1:24
TS2307:找不到模块’lodash-es / capitalize’.
Webpack也在抱怨这一点,但如果在resolve.modules中提供node_modules的绝对路径,则可以修复.现在看起来像唯一的TypeScript不知道在哪里查找依赖项.我查看过TypeScript配置文档并且找不到任何有用的东西,有没有办法提示TypeScript在哪里查找依赖项,如果文件位于主文件夹之外?我尝试使用rootDirs,但似乎不适合我的情况.
解决方法
好吧,TypeScript有2个(可能更多,但在我的情况下只使用了2个)解决非相对依赖关系的策略,它们都依赖于真实的文件路径.如果npm会复制本地依赖项,那么就不存在任何问题,但它会创建符号链接.
我找到了一个可能解决这个问题的解决方法,但不是最优雅的方式.如果将baseUrl指定为.,则可以提供路径,并且可以提供第三方依赖关系的确切位置.
现在我的.tsconfig有以下几行:
"baseUrl": ".","paths": { "lodash-es": ["node_modules/lodash-es"] },
这将强制将所有lodash-es条目解析为./node_modules/lodash-es,其中dot指向主项目根目录.
希望TypeScript提供自定义模块解析策略的可能性.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。