Javascript 从typescript库导入的符号未定义
我正在使用Typescript开发一个React/Redux应用程序。为了简化开发,我想为每个“域”或“特性”创建库,这些库将封装域的细节并向顶级应用程序公开API 到目前为止,我已经创建了一个名为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
@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/
yesintsconfig.json/compilerOptions
在app/tsconfig.json
中?在@foo/foo
tsconfig.jsonYeah中,成功了!非常感谢,下次你来南特时我欠你一杯啤酒:)但我必须说我对js/ts的整个生态系统如此脆弱印象深刻。。。
{
...
"main": "build/index.js",
"types": "build/index.d.ts",
...
}