-
Notifications
You must be signed in to change notification settings - Fork 84
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
【求助】接入支持 search 接口能力的 cnpmcore 版本遇到了问题 #585
Comments
尝试了直接在cnpmcore项目里同样的配置是可以正常正常启动的。但是到了应用集成 cnpmcore 包的时候就不行了,像是 cnpmcore 里 app/infra/SearchAdapter.ts 里的 ESClient 注入没生效 |
你将 elasticsearch 插件关闭 |
import {
AccessLevel,
SingletonProto,
} from '@eggjs/tegg';
import { SearchAdapter } from 'cnpmcore/common/typing';
/**
* Use elasticsearch to search the huge npm packages.
*/
@SingletonProto({
accessLevel: AccessLevel.PUBLIC,
name: 'searchAdapter',
})
export class ESSearchAdapter implements SearchAdapter {
search(): Promise<any> {
throw new Error('Method not implemented.');
}
upsert(): Promise<string> {
throw new Error('Method not implemented.');
}
delete(): Promise<string> {
throw new Error('Method not implemented.');
}
} @baxtergu 试试这个? |
我想要在应用集成cnpmcore包的基础上启用 elasticsearch 的搜索能力现在有法子吗? |
我试了应用集成方式,开关项关掉还是抛错。 |
其实我还是想要在应用集成的场景下启用这个能力,这个解决方案类似禁用该能力...😮💨 |
我在本地没能重现出报错 config.elasticsearch = {
client: {
node: "http://localhost:9200"
}
}; |
https://github.com/elrrrrrrr/examples/blob/with-cnpmcore/hello-tegg/config/config.default.ts#L94 @baxtergu 这是我的验证分支 可以对比看看本地执行是否正常,在 curl 'http://localhost:7001/-/v1/search?text=banana' 由于没有实际配置 node,会提示 error,但是应用启动应该都是正常的 |
我在配置文件中指定过这个部分了,如果不提供这个部分的话报错信息是这个 我明天再试试其他法子看看能不能绕过这个错,参考之前 s3-cnpmcore 的实现方式 |
我用的包管理器是 yarn 1.x 的 latest,我明天试试直接用 npm 排除一下 |
感谢,我明天也试试这个 demo 在我的环境中执行有没有问题 |
集成的教程估计有点过时了,我愣是没找着这个东西 @elrrrrrrr import { cnpmcoreConfig } from 'cnpmcore/common/config'; |
@elrrrrrrr 等搜索能力调通以后可以来贡献一下踩坑经验 ,哈哈 @Beace 我的这个有问题的集成的场景感觉就是这个 ESClient 没能通过 cnpmcore infra 里 SearchAdapter 默认实现的注入方式获取,我对比了下 s3-cnpmcore 的实现,它是直接用户在 config 中初始化以后通过 config 对象上的属性传进去的,在我的项目里通过 infra 层来覆盖 NFSClient 实现 S3Like 对象存储服务的接入是 OK 的,也跑了比较长一段时间了。 我明天试试指定 为啥 @Inject 方式没生效我也搞不清楚,求 tegg 大佬解惑 |
@baxtergu 那看看 https://github.com/elrrrrrrr/examples/blob/with-cnpmcore/hello-tegg 再试试,这个也是集成模式。 |
用排除法试了下,应该是 config/plugin.d.ts 没重新生成导致注入没找到,重新生成以后 OK 了。 这会在解决 es 7.x 服务更换 7.x Client 问题... |
因为我们内部最高只有 7.x 的 ES,我换了 7 的 Client 包发现 SDK 返回比 8 的多包了一层 body,这个方便兼容下么?我重写插件发现有很多类型 es7 的 sdk 里没有。 |
es7 的话在插件侧做兼容就可以了,晚些我改下插件,内置多个版本的 es sdk 就好了 |
@Beace 我用重载能力临时解决了下 es7 的 client 问题,现在在导入索引的时候发现有极少数的写入接口会报 涉及索引写入有问题的包名清单: alphabet
ansi-wrap
any
arr-pluck
arr-reduce
array-every
array-intersection
array-reduce-right
array-rest
array-some
async-helper-base
asyncreduce
base-loader
bufferput
cbor-sync
chainy-plugin-feed
chainy-plugin-set
colorbrewer
config-chain
deep-filter-object
delims
dev-null
dirs
export-dirs
exposify
ext-map
extendonclass
fill-array
filter-array
filter-type
gl-mat2
gl-mat3
gl-quat
gl-vec2
gl-vec3
gl-vec4
glob-base
glob-path-regex
gulp-drafts
has-any-deep
helper-codelinks
helper-concat
helper-read
helper-toc
helper-yaml
init-file-loader
is-class
is-valid-domain
is-valid-path
is-whitespace
jsdom-jscore
lazy
lint-templates
lookup-deps
markdown-link
markdown-reference
mothership
net
noncharacters
preserve
prompt-promise
put
readme-includes
relative-dest
rename-function-calls
resolve-bin
runnel
set
set-object
stack-mapper
stringify-github-url
stringify-travis-url
template-utils
to-arg
to-gfm-code-block
to-key
to-template
transformify
tv4
unix-dgram
update-section |
在这里修复了 #587 |
有些 package 的 license 是个对象,会导致 es 写入失败 #585 (comment) ![image](https://github.com/cnpm/cnpmcore/assets/13284978/4343a1e8-1fa5-4aed-950d-d5038534dad8)
[skip ci] ## [3.43.5](v3.43.4...v3.43.5) (2023-09-05) ### Bug Fixes * the license may be an object ([#587](#587)) ([88b6afb](88b6afb)), closes [/github.com//issues/585#issuecomment-1706009496](https://github.com/cnpm//github.com/cnpm/cnpmcore/issues/585/issues/issuecomment-1706009496)
multi match 那块没写 author 的查询的,你可以加一下 |
我看了下 https://github.com/npm/registry/blob/master/docs/REGISTRY-API.md#get-v1search 这个下面的
|
|
我也尝试了将 cnpmcore 中 SearchAdapter 的实现代码搬到集成的应用中来,遇到的报错是一样的,也就是下面截图中的,有大佬能帮忙看一下造成原因可能是什么吗?
The text was updated successfully, but these errors were encountered: