我正在尝试使用由JSII从类型记录aws库项目中生成的一个内部java库。
当我们尝试调用和在cdk synth上时,我们会出现以下错误
software.amazon.jsii.JsiiException:模块‘@company/cdk-标记’未找到错误:模块‘@company/cdk-标记’未找到
目前我们使用的是cdk版本1.106.0、java 13和maven 3.6。
这是我们的package.json和模块-Package.json
package.json
"name": "aws-cdk-library",
"version": "0.0.0",
"description": "company's AWS CDK Library.",
"author": {
"name": "company",
"url": "https://www.company.com",
"organization": true
},
"scripts": {
"build": "lerna run build --stream --sort --concurrency=1",
"clean": "lerna clean",
"deploy": "lerna publish --no-push --no-git-tag-version --force-publish --yes",
"eslint": "eslint . --ext=.js,.ts --format=node_modules/eslint-formatter-pretty",
"install": "lerna bootstrap",
"lint": "eslint . --ext .js,.ts --ignore-path=.gitignore",
"package": "lerna run package --stream --sort --concurrency=1",
"publish-mvn": "lerna run publish-mvn --stream --sort --concurrency=1",
"test": "jest",
"test:ci": "jest --ci --runInBand",
"setVersion": "lerna version --no-push --no-git-tag-version --force-publish --yes",
"watch": "lerna run watch --parallel"
},
"devDependencies": {
"@aws-cdk/assert": "1.106.0",
"@aws-cdk/aws-certificatemanager": "1.106.0",
"@aws-cdk/aws-cloudfront": "1.106.0",
"@aws-cdk/aws-cloudwatch": "1.106.0",
"@aws-cdk/aws-cloudwatch-actions": "1.106.0",
"@aws-cdk/aws-lambda": "1.106.0",
"@aws-cdk/aws-route53": "1.106.0",
"@aws-cdk/aws-route53-targets": "1.106.0",
"@aws-cdk/aws-s3": "1.106.0",
"@aws-cdk/aws-s3-deployment": "1.106.0",
"@aws-cdk/aws-sns": "1.106.0",
"@aws-cdk/aws-sns-subscriptions": "1.106.0",
"@aws-cdk/aws-synthetics": "1.106.0",
"@aws-cdk/core": "1.106.0",
"@aws-solutions-constructs/aws-cloudfront-s3": "1.106.0",
"@aws-solutions-constructs/core": "1.106.0",
"@types/jest": "^26.0.23",
"@types/node": "^15.0.0",
"@typescript-eslint/eslint-plugin": "^4.22.0",
"@typescript-eslint/parser": "^4.22.0",
"constructs": "^3.3.75",
"eslint": "^7.25.0",
"eslint-config-tc": "^19.0.0",
"eslint-config-typescript-tc": "^3.0.0",
"eslint-formatter-pretty": "^4.0.0",
"eslint-plugin-eslint-comments": "^3.2.0",
"eslint-plugin-import": "^2.22.1",
"eslint-plugin-jest": "^24.3.6",
"eslint-plugin-prettier": "^3.4.0",
"eslint-plugin-unicorn": "^33.0.0",
"jest": "^26.6.3",
"jsii": "^1.30.0",
"jsii-pacmak": "^1.30.0",
"jsii-release": "^0.2.9",
"lerna": "^4.0.0",
"prettier": "^2.2.1",
"ts-jest": "^26.5.5",
"ts-node": "^10.0.0",
"typescript": "^4.2.4"
},
"dependencies": {
"@company/cdk-route53-cloudfront-s3": "file:packages/route53-cloudfront-s3",
"@company/cdk-cloudwatch": "file:packages/cloudwatch",
"@company/cdk-nodejs-canary": "file:packages/nodejs-canary",
"@company/cdk-pagerduty-alarm-action": "file:packages/pagerduty-alarm-action",
"@company/cdk-tags": "file:packages/tags"
},
"engines": {
"node": ">=14.0.0",
"npm": ">=6.0.0"
},
"private": true,
"license": "UNLICENSED"
}```
** module-package.json **
{
"name": "@company/cdk-tags",
"version": "0.0.0",
"description": "A helper library for setting required AWS Tags.",
"keywords": [
"aws",
"cdk"
],
"repository": {
"type": "git",
"url": "git+................"
},
"author": {
"name": "company",
"url": "..........",
"organization": true
},
"license": "UNLICENSED",
"bugs": {
"url": "..............."
},
"homepage": ".......................",
"main": "lib/index.js",
"types": "lib/index.d.ts",
"scripts": {
"build": "jsii",
"watch": "jsii -w",
"package": "jsii-pacmak",
"publish-mvn": "jsii-release-maven"
},
"jsii": {
"outdir": "dist",
"targets": {
"java": {
"package": "com.company.common.aws.cdk",
"maven": {
"groupId": "com.company.common.aws.cdk",
"artifactId": "tags"
}
}
}
},
"devDependencies": {
"@aws-cdk/assert": "1.106.0",
"@aws-cdk/aws-sns": "1.106.0"
},
"peerDependencies": {
"@aws-cdk/core": "1.106.0",
"constructs": "^3.2.84"
}
}发布于 2021-07-07 13:59:09
最后,我们能够解决这个问题。这是由于具有相同java包结构名称的多个模块造成的。这在从java运行时在加载和查找模块时产生了冲突。
更改包结构后,它开始正常工作。
我们在一个主要项目中有多个模块,如cloudwatch和nodejs-金丝雀。
先于
云表的package.json
"jsii":{ "groupId":"com.company.common.aws.cdk","artifactId":“artifactId”}}}
package.json for nodejs-金丝雀
"jsii":{ "groupId":"com.company.common.aws.cdk","artifactId":“NodeJS-金丝雀”}}}
后
"jsii":{ "groupId":"com.company.common.aws.cdk","artifactId":“artifactId”}}}
package.json
"jsii":{ "groupId":"com.company.common.aws.cdk","artifactId":“NodeJS-金丝雀”}}}
只是为了添加更多,最初当我们使用一个模块运行时,它工作得很好。稍后,在Java中使用时添加了额外的模块之后,我们得到了模块未找到的错误。
https://stackoverflow.com/questions/68167379
复制相似问题