问题是这样的:我使用NX进行monorepo。有一个用angularJS(用于构建的webpack)编写的应用程序。它使用产生web组件的库(react inside)。
import { test } from "@lib/somelib"
库成功生成/dist文件夹(包含index.js、react和ts类型)。
问题是,当我构建主应用程序时,我得到一个错误:
[tsl] ERROR in /Users/***/monorepo/packages/somelib/src/web-components/FirstWebComponent.tsx(33,5)
TS17004: Cannot use JSX unless the '--jsx' flag is provided.
@ ../somelib/src/web-components/index.ts 4:28-58
@ ../somelib/src/index.ts 6:21-48
@ ./app/scripts/app.ts 90:18-50
难道它不应该使用/dist/packages/somelib/中的文件,而不是使用源文件中的原始文件吗?
下面是我的tsconfig.base.json
{
"compileOnSave": false,
"compilerOptions": {
"rootDir": ".",
"sourceMap": true,
"declaration": false,
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"importHelpers": true,
"target": "es2015",
"module": "esnext",
"lib": ["es2017", "dom"],
"skipLibCheck": true,
"skipDefaultLibCheck": true,
"baseUrl": ".",
"paths": {
"@lib/somelib": ["packages/somelib/src/index.ts"]
}
},
"exclude": ["node_modules", "tmp"]
}
它应该使用编译后的react库文件。我尝试在tsconfig.base.json中更改路径,但没有成功:
"paths": {
"@lib/somelib": ["dist/packages/somelib"]
}
我还尝试在应用程序的webpack配置中添加别名,
resolve: {
plugins: [new TsconfigPathsPlugin()],
extensions: ['.tsx', '.ts', '.js', '.css', '.html'],
alias: {
"@lib/somelib": path.resolve(__dirname, "../../dist/packages/somelib/")
}
},
1条答案
按热度按时间ruarlubt1#
在玩了一会儿之后,我找到了一个解决方案:所以我必须添加typescript文件的路径,以便IDE可以识别类型(在文件tsconfig.base.json:中)
然后在webpack.config.js中:
但是当编译AngularJS mainproject的时候,编译是在尖叫:
所以我不得不在AngualrJS tsconfig.json中添加:(在编译器选项中
现在我可以将包含react的Web组件库导入到AngularJS项目中,IDE将提示正确的类型。