设置
我有一个pnpm workspace,结构如下:
workspace/
├── apps/
├───── nextjs-app/
├──────── package.json
├──────── tsconfig.json
├──────── ...
├── packages/
├───── api/
├──────── package.json
├──────── tsconfig.json
├──────── index.ts
├── tsconfig.base.json
└── package.json
nextjs-app
是一个Next.js启动器,除了我修改了所有的tsconfig.json
文件之外,它还预配置了所有的TS。以下是三个TS配置文件的内容:
./tscofnig.base.json
{
"compilerOptions": {
"target": "es2017",
"lib": ["dom", "dom.iterable", "esnext"],
"allowJs": true,
"skipLibCheck": true,
"strict": true,
"forceConsistentCasingInFileNames": true,
"noEmit": true,
"esModuleInterop": true,
"module": "esnext",
"moduleResolution": "node",
"resolveJsonModule": true,
"isolatedModules": true,
"jsx": "preserve",
"incremental": true,
"noUncheckedIndexedAccess": true,
"experimentalDecorators": true
}
}
./apps/nextjs-app/tsconfig.json
{
"extends": "../../tsconfig.base.json",
"include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", "**/*.cjs", "**/*.mjs"],
"exclude": ["node_modules"]
}
./packages/API/tsconfig.json
{
"extends": "../../tsconfig.base.json",
"include": ["index.ts"]
}
此外,./packages/api/package.json
包含以下两个设置:
{
...
"name": "@my-app/api",
"main": "./index.ts",
"types": "./index.ts"
...
}
最后,为了在我的NextJS项目中安装workspace包,我运行以下命令:pnpm --filter nextjs-app add @my-app/api@workspace:*
问题
如果我在API包中有export const foo = 'bar';
,我可以使用import { foo } from '@my-app/api';
轻松地将其导入到Next.js应用程序中的任何位置。一切都很好。
但是如果我尝试在API包中使用import type
或export type
语法,我会得到以下错误:
../../packages/api/index.ts
Module parse failed: Unexpected token (14:7)
You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders
| export const foo = 'bar';
|
> export type Foo = 'bar';
|
这种情况从来没有发生过,即。我可以使用import type
和export type
,只要这些都发生在NextJS项目中。但是当我在API包中执行此操作时,我会得到错误。
1条答案
按热度按时间ncecgwcz1#
我遇到了类似的事情。对于您给定的配置,我猜
在你的基础tsconfig是要阻止输出。您可以尝试多定义几个字段
在
/api/tsconfig.json
中。重新运行tsc
编译器后,outDir
应该具有您要查找的类型。如果没有,希望你能有一些提示,以什么可能是错误的。