库的打字稿模块解析在实现时不起作用

我有一个依赖于项目 B 的项目 A。项目 B 是用 typescript (tsc) 编写的,而 A 仍在 JS 中(使用 Babel)。

项目 B 有更多的公共代码,可以在将来在项目 C 中重复使用。因此它主要有公共代码。项目 B 有以下带有一些伪代码的文件。

# src/components/comp1.tsx
const Comp1 = () => (<div>Hello world</div>);
export default Comp1;
# src/components/comp2.tsx
import Comp1 from 'components/comp1';
const Comp2 = () => (<div><Comp1 /></div>);
export default Comp2;
# src/index.ts
export {default as Comp1} from 'components/comp1';
export {default as Comp2} from 'components/comp2';

我的 tsconfig 的 baseUrl 为 ./src,路径为 {}。当我在这里的故事书中运行这些组件时,它们会按预期工作。现在我使用 tsc 并在 dist 文件夹中将它们编译为 commonjs 模块 & 目标为 es2015

现在在项目 A 中。我将使用这个项目 B。所以我确实安装了项目 B 作为依赖项。每当我使用 webpack 编译项目 A 时,它都会引发错误。假设我在项目 A 中的文件如下所示:

# src/pages/index.js
import {Comp2} from 'project-B';
const Home = () => (<div><Comp2 /></div>);
export default Home;

现在它抛出如下错误:-

error - ../project-B/dist/components/comp2.js:9:0
Module not found: Can't resolve 'components/comp1'
   7 | const classnames_1 = __importDefault(require("classnames"));
   8 | const free_solid_svg_icons_1 = require("@fortawesome/free-solid-svg-icons");
>  9 | const link_1 = __importDefault(require("components/comp1"));

如果我直接使用 comp1,它就可以正常工作。 comp2 无法定位 comp1。我认为这与模块分辨率有关。我不知道打字稿应该在同一个依赖项目中查找时在哪里查找 comp1。我什至无法在网上找到这样的场景寻求帮助。我希望我现在也不必为依赖项定义模块分辨率。任何帮助表示赞赏。谢谢。

yangguangpuzhao1989 回答:库的打字稿模块解析在实现时不起作用

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/4297.html

大家都在问