Javascript 从typescript库导入的符号未定义

Javascript 从typescript库导入的符号未定义,javascript,reactjs,typescript,Javascript,Reactjs,Typescript,我正在使用Typescript开发一个React/Redux应用程序。为了简化开发,我想为每个“域”或“特性”创建库,这些库将封装域的细节并向顶级应用程序公开API 到目前为止,我已经创建了一个名为@foo/foo的库(Typescript)和一个依赖于该库的主应用程序。该库有一个顶级index.ts文件,该文件如下所示: export * from "./services/Executor"; export * from "./services/Foo"; export * from "./s

我正在使用Typescript开发一个React/Redux应用程序。为了简化开发,我想为每个“域”或“特性”创建库,这些库将封装域的细节并向顶级应用程序公开API

到目前为止,我已经创建了一个名为
@foo/foo
的库(Typescript)和一个依赖于该库的主应用程序。该库有一个顶级
index.ts
文件,该文件如下所示:

export * from "./services/Executor";
export * from "./services/Foo";
export * from "./services/Result";
export * from "./services/listFoo";
文件
/services/Executor.ts
导出一系列函数,如:

export const fetchFoo = ...
然后,我使用
create react app--script react ts
创建了一个应用程序,并在其中一个操作文件中执行以下操作:

import { fetchFoo } from '@foo/foo';
...
但是,当我使用
npm run start
运行React应用程序时,我得到:

TypeError:fetchFoo不是函数

根据我在web上的研究,我假设我弄乱了模块导入语义:两个包都配置为(在
tsconfig.json
中)使用
esModuleInterop:true
编译到
es6
。我尝试更改
模块
字段,但没有成功

我做错了什么


更新:以下是一些代码演示了问题:

您应该在package.json的“main”键下引用构建输出,并指向“types”键下的主声明文件:

CRA tsc/webpack在绑定时将查找JS文件。默认情况下不会传输导入的模块(虽然可以启用此功能,但由于您单独构建了lib,因此不需要这样做)


我希望这能起作用(如果是的话会有帮助)

您是否已将
模块设置为
commonjs
?在哪里?在
lib/
yesin
tsconfig.json/compilerOptions
app/tsconfig.json
中?在
@foo/foo
tsconfig.jsonYeah中,成功了!非常感谢,下次你来南特时我欠你一杯啤酒:)但我必须说我对js/ts的整个生态系统如此脆弱印象深刻。。。
{
  ...
  "main": "build/index.js",
  "types": "build/index.d.ts",
  ...
}