0

我正在尝试部署一个国际象棋电报机器人,开发人员对其进行了演示并且效果很好。然而,该代码有一个错误,即黑白棋子颠倒了,并且将主教和典当互换了两种颜色。

所以我决定分叉它并纠正这个错误,并认为我将自己托管它来测试,这就是我卡住的地方,因为我对节点 - npm 世界知之甚少。我试图让它达到 heroku 编译它没有错误的地步:

heroku 构建和部署成功

但是这段代码使用 knex 模块,如果我尝试在我的本地机器上运行npm run knex migrate:latest原作者推荐的,它会抛出错误npm ERR! missing script: knex

本地 npm 错误

我创建的 fork 可在此处获得:https ://github.com/pubmania/chessbot 我在 heroku 上设置了以下环境变量:

配置变量

这再次符合原作者的指导。

最初,当我尝试创建测功机时,我得到“无节点引擎”,所以我在 package.json 中添加了具有最新节点版本的节点引擎,然后它给出了错误“无启动脚本”错误,所以我在包中添加了启动脚本.json 本质上与“dev”相同,但这消除了该错误。现在heroku上的日志显示以下条目:

2020-05-05T10:31:34.714232+00:00 app[web.1]:     at Object.<anonymous> (/app/src/index.js:23:23)
2020-05-05T10:31:34.714233+00:00 app[web.1]:     at Module._compile (internal/modules/cjs/loader.js:1133:30)
2020-05-05T10:31:34.714233+00:00 app[web.1]:     at Object.Module._extensions..js (internal/modules/cjs/loader.js:1153:10)
2020-05-05T10:31:34.714233+00:00 app[web.1]:     at Module.load (internal/modules/cjs/loader.js:977:32)
2020-05-05T10:31:34.714234+00:00 app[web.1]:     at Function.Module._load (internal/modules/cjs/loader.js:877:14) {
2020-05-05T10:31:34.714234+00:00 app[web.1]:   code: 'MODULE_NOT_FOUND',
2020-05-05T10:31:34.714234+00:00 app[web.1]:   requireStack: [ '/app/src/index.js' ]
2020-05-05T10:31:34.714235+00:00 app[web.1]: }
2020-05-05T10:31:34.741594+00:00 app[web.1]: [31m[nodemon] app crashed - waiting for file changes before starting...[39m
2020-05-05T10:32:30.546060+00:00 heroku[web.1]: State changed from starting to crashed

我尝试npm run knex migrate:latest从 heroku bash 运行命令,但仍然遇到与下面的屏幕截图相同的错误。

在此处输入图像描述

我正在阅读更多内容,并在 package.json 的脚本部分添加了以下内容

"knex": "node_modules/.bin/knex migrate:latest"

然后npm run knex在本地运行

sqlite does not support inserting default values. Set the `useNullAsDefault` flag to hide this warning. (see docs http://knexjs.org/#Builder-insert).

这也许可以通过以下事实来解释:我在本地使用 sqlite,所以我只是跑了heroku local web,但这给出了错误:

13:31:24 web.1   |  > chessbot@1.0.0 start C:\a-chess-bot-git\chessbot
13:31:24 web.1   |  > nodemon -w src src/index.js
13:31:25 web.1   |  [nodemon] 1.19.4
13:31:25 web.1   |  [nodemon] to restart at any time, enter `rs`
13:31:25 web.1   |  [nodemon] watching dir(s): src\**\*
13:31:25 web.1   |  [nodemon] watching extensions: js,mjs,json
13:31:25 web.1   |  [nodemon] starting `node src/index.js`
13:31:25 web.1   |  internal/modules/cjs/loader.js:960
13:31:25 web.1   |    throw err;
13:31:25 web.1   |    ^
13:31:25 web.1   |  Error: Cannot find module 'C:\a-chess-bot-git\chessbot\src\scenes'
13:31:25 web.1   |  Require stack:
13:31:25 web.1   |  - C:\a-chess-bot-git\chessbot\src\index.js
13:31:25 web.1   |      at Function.Module._resolveFilename (internal/modules/cjs/loader.js:957:15)
13:31:25 web.1   |      at Function.Module._resolveFilename (C:\a-chess-bot-git\chessbot\node_modules\module-alias\index.js:49:29)
13:31:25 web.1   |      at Function.Module._load (internal/modules/cjs/loader.js:840:27)
13:31:25 web.1   |      at Module.require (internal/modules/cjs/loader.js:1019:19)
13:31:25 web.1   |      at require (internal/modules/cjs/helpers.js:77:18)
13:31:25 web.1   |      at Object.<anonymous> (C:\a-chess-bot-git\chessbot\src\index.js:23:23)
13:31:25 web.1   |      at Module._compile (internal/modules/cjs/loader.js:1133:30)
13:31:25 web.1   |      at Object.Module._extensions..js (internal/modules/cjs/loader.js:1153:10)
13:31:25 web.1   |      at Module.load (internal/modules/cjs/loader.js:977:32)
13:31:25 web.1   |      at Function.Module._load (internal/modules/cjs/loader.js:877:14) {
13:31:25 web.1   |    code: 'MODULE_NOT_FOUND',
13:31:25 web.1   |    requireStack: [
13:31:25 web.1   |      'C:\\a-chess-bot-git\\chessbot\\src\\index.js'
13:31:25 web.1   |    ]
13:31:25 web.1   |  }
13:31:25 web.1   |  [nodemon] app crashed - waiting for file changes before starting

任何有关在 heroku 上部署此功能的帮助将不胜感激。

4

1 回答 1

0

在进一步阅读并深入研究“master”分支上的代码后,我意识到问题在于代码缺少一些 index.js 文件。我从它派生出来的仓库有一个“备份”分支,使用它似乎已经奏效,尽管它仍然没有按预期工作并且正在崩溃。

我终于放弃并删除了分叉的 repo,并会在我有空的时候再试一次,但上面的问题肯定已经解决了,我会把它留在这里,希望有人会觉得它有用。

于 2020-05-06T13:19:19.190 回答