koishijs / koishi

Cross-platform chatbot framework made with love
https://koishi.chat
MIT License
4.51k stars 247 forks source link

Bug: 两个问题 #1339

Closed FurryRbl closed 9 months ago

FurryRbl commented 9 months ago

Describe the bug

问题1:

❯ yarn dev
yarn run v1.22.21
$ node ./src/main.js
P:\Xiying\koishi\node_modules\cordis\lib\index.cjs:614
    throw new Error('invalid plugin, expect function or object with an "apply" method, received ' + typeof plugin);
          ^

Error: invalid plugin, expect function or object with an "apply" method, received object
    at Proxy.resolve (P:\Xiying\koishi\node_modules\cordis\lib\index.cjs:614:11)
    at Proxy.plugin (P:\Xiying\koishi\node_modules\cordis\lib\index.cjs:653:10)
    at file:///P:/Xiying/src/main.js:10:5
    at ModuleJob.run (node:internal/modules/esm/module_job:218:25)
    at async ModuleLoader.import (node:internal/modules/esm/loader:329:24)
    at async loadESM (node:internal/process/esm_loader:34:7)
    at async handleMainPromise (node:internal/modules/run_main:113:12)

Node.js v20.10.0
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

问题2”:

❯ yarn dev
yarn run v1.22.21
$ node ./src/main.js
Done in 0.92s.

Steps to reproduce

问题1代码:

import { Context } from "../koishi/packages/koishi/lib/index.mjs";
import * as echo from "@koishijs/plugin-echo";
import console from "@koishijs/plugin-console";
import * as sandbox from "@koishijs/plugin-sandbox";

const app = new Context({
    port: 6200,
});

app.plugin(console);
app.plugin(sandbox);
app.plugin(echo);

app.start();

问题二代码:

import { Context } from "../koishi/packages/koishi/lib/index.mjs";
import * as echo from "@koishijs/plugin-echo";
import console from "@koishijs/plugin-console";
import * as sandbox from "@koishijs/plugin-sandbox";

const app = new Context({
    port: 6200,
});

//app.plugin(console);
app.plugin(sandbox);
app.plugin(echo);

app.start();

Expected behavior

正常运行并出现6200端口

Screenshots

No response

Versions

Additional context

如果采用CJS写法则不会出现问题1但仍然会出现问题2 如果采用CJS和TS写法则不会出现问题1但仍然会出现问题2

shigma commented 9 months ago

关于问题 2:port 是 @koishijs/plugin-server 的配置项。

import server from '@koishijs/plugin-server'

app.plugin(server, {
  port: 6200,
})

为什么不加载 server 就会直接退出呢?因为 node 进程会检测是否有持续占用的 handle,没有 handle 的情况下就会直接退出,开了 server 就不会退出了。

FurryRbl commented 9 months ago

关于问题 2:port 是 @koishijs/plugin-server 的配置项。

import server from '@koishijs/plugin-server'

app.plugin(server, {
  port: 6200,
})

为什么不加载 server 就会直接退出呢?因为 node 进程会检测是否有持续占用的 handle,没有 handle 的情况下就会直接退出,开了 server 就不会退出了。

感觉可以但我试不了会抛出问题1的错误。。。。其实我都是看文档部署的

shigma commented 9 months ago

已经复现此问题,似乎是 Console 构建结果的问题。

import Console from '@koishijs/plugin-console'

app.plugin(Console) // 类型正常,运行报错
app.plugin(Console.default) // 类型报错,运行正常

我们会尽快修复。

FurryRbl commented 9 months ago

已经复现此问题,似乎是 Console 构建结果的问题。

import Console from '@koishijs/plugin-console'

app.plugin(Console) // 类型正常,运行报错
app.plugin(Console.default) // 类型报错,运行正常

我们会尽快修复。

幸苦了

shigma commented 9 months ago

刚刚修了 server 的部分,console 的部分稍等。

shigma commented 9 months ago

发了前前后后十几个版本,如果之后还有类似的问题可以同样提这里。

用不了的话尝试一下 ffff['default'] 的写法,ts 不会报错。