我想有一个使用Yarn工作空间的monorepo,其中我持有:
- 一个react 17应用程序
- 一个react 18应用程序
- nestjs应用程序
- 具有用于所有它们的公共功能的共享层(例如:日期格式函数)
我克隆了这个项目https://github.com/mightyhorst/medium-react-nestjs-monorepo,它设法在它们之间共享类型。我不得不向nohoist
添加typescript和react的东西,这样它就不会提升错误的版本,而且它工作得很好-react应用程序和nest都可以使用共享类型。当我在公共层添加函数时,问题就出现了。workspaces/common/src/index.ts
个
作品
export interface User {
email: string
}
不起作用
export interface User {
email: string
}
export function hello() { console.log('world') }
我在运行任何react应用程序时都会收到此错误(尽管类型没有任何错误):
../common/src/model.ts 4:7
Module parse failed: Unexpected token (4:7)
File was processed with these loaders:
* ./node_modules/@pmmmwh/react-refresh-webpack-plugin/loader/index.js
You may need an additional loader to handle the result of these loaders.
| $RefreshSetup$(module.id);
|
> export interface User{
| email: string;
| firstName?: string;
运行nestjs时出现以下错误:
export * from "./model";
^^^^^^
SyntaxError: Unexpected token 'export'
at wrapSafe (internal/modules/cjs/loader.js:984:16)
at Module._compile (internal/modules/cjs/loader.js:1032:27)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1097:10)
at Module.load (internal/modules/cjs/loader.js:933:32)
at Function.Module._load (internal/modules/cjs/loader.js:774:14)
at Module.require (internal/modules/cjs/loader.js:957:19)
at require (internal/modules/cjs/helpers.js:88:18)
at Object.<anonymous> (/home/elbit/Projects/medium-react-nestjs-monorepo/workspaces/nestjs/dist/src/main.js:5:18)
at Module._compile (internal/modules/cjs/loader.js:1068:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1097:10)
我觉得这是一个常见的事情,但我找不到解决办法。
1条答案
按热度按时间relj7zay1#
我使用以下工具使其工作:
yarn-workspaces
,没有lerna来处理所有软件包"workspaces": { "nohoist": ["**"] }
(在package.json中)craco
处理common
软件包和别名(通过craco-alias
)@ef-carbon/tspm
以解析任何非React软件包的tsconfig.compilerOptions.paths
我的
craco.config.js
我的
tsconfig.json
非React应用程序