eggjs / egg

🥚 Born to build better enterprise frameworks and apps with Node.js & Koa
https://eggjs.org
MIT License
18.87k stars 1.81k forks source link

在服务器上启动项目失败,一直重启,并提示TypeError: Messenger.create is not a function #3476

Closed huyuyang closed 5 years ago

huyuyang commented 5 years ago

What happens?

在本地start项目一切正常,但是在服务器上却失败了,并且好像是一直在重复启动。

最小可复现仓库

暂无

复现步骤,错误日志以及相关配置

查看stdout.log,如下图: image 查看stderr.log,如下图: image

已经尝试过删除node_modules,并重新安装依赖。 package.json的信息如下: "dependencies": { "@cvte/apollo-node-client": "0.1.1", "@cvte/ciac": "1.0.2", "await-stream-ready": "^1.0.1", "axios": "0.17.1", "echarts": "^4.0.4", "egg": "^2.3.0", "egg-cors": "^2.0.0", "egg-logger": "^1.5.0", "egg-validate": "^1.0.0", "egg-view-vue-ssr": "^3.0.6", "extend": "3.0.0", "fs": "0.0.1-security", "hammerjs": "2.0.8", "lodash": "4.17.4", "mockjs": "1.0.1-beta3", "moment": "2.17.1", "pinyin": "2.8.3", "server-side-render-resource": "1.0.0", "stream-wormhole": "^1.0.3", "uuid": "3.3.2", "vant": "^1.4.2", "vue": "2.5.13", "vue-echarts": "^3.1.3", "vue-hot-reload-api": "2.1.0", "vue-router": "3.0.1", "vue-server-renderer": "2.5.13", "vuex": "3.0.1", "vuex-router-sync": "5.0.0" }, "devDependencies": { "autod-egg": "1.1.0", "autoprefixer": "7.2.6", "babel-core": "6.26.0", "babel-loader": "7.1.2", "babel-plugin-add-module-exports": "0.2.1", "babel-plugin-import": "1.6.5", "babel-plugin-syntax-dynamic-import": "6.18.0", "babel-plugin-transform-object-assign": "6.22.0", "babel-plugin-transform-object-rest-spread": "6.26.0", "babel-plugin-transform-runtime": "6.23.0", "babel-preset-env": "1.6.1", "cross-env": "5.1.3", "cz-conventional-changelog": "2.1.0", "directory-named-webpack-plugin": "2.3.0", "easywebpack-cli": "3.6.2", "easywebpack-vue": "3.6.0", "egg-logview": "1.0.0", "egg-webpack": "3.3.2", "egg-webpack-vue": "2.0.1", "eslint": "4.17.0", "eslint-config-egg": "5.1.1", "eslint-loader": "1.9.0", "eslint-plugin-vue": "2.1.0", "imagemin-webpack-plugin": "1.6.1", "ip": "1.1.5", "less": "2.7.3", "less-loader": "4.0.5", "node-sass": "4.7.2", "postcss-loader": "2.1.0", "progress-bar-webpack-plugin": "1.10.0", "sass-loader": "6.0.6", "ts-loader": "3.5.0", "tslint": "5.9.1", "tslint-loader": "3.5.3", "typescript": "^2.7.1", "uglifyjs-webpack-plugin": "1.1.8", "vconsole": "^3.1.0", "vue-template-compiler": "2.5.13", "webpack-manifest-resource-plugin": "2.0.2" },

相关环境信息

dead-horse commented 5 years ago

hi, 建议根据堆栈调试一下帮忙定位一下具体的问题,或者能够提供一个可复现的示例,因为从 egg 的源码来看应该是不会出现这个错误的。

https://github.com/eggjs/egg/blob/master/lib/egg.js#L60

huyuyang commented 5 years ago

hi, 建议根据堆栈调试一下帮忙定位一下具体的问题,或者能够提供一个可复现的示例,因为从 egg 的源码来看应该是不会出现这个错误的。

https://github.com/eggjs/egg/blob/master/lib/egg.js#L60

你好,我从其他issue里找到类似的情况,说的是由于健康检查产生了这样的问题。我想了解一下这里Messenger的作用是什么?

huyuyang commented 5 years ago

问题最终是以项目迁移到其他地方部署而解决了。 原本项目是在方舟上部署,后来迁移到鲸云,不会再出现这个问题。但是问题产生的原因暂时还是未知。

atian25 commented 5 years ago

你好,我从其他issue里找到类似的情况,说的是由于健康检查产生了这样的问题。我想了解一下这里Messenger的作用是什么?

跟健康检查应该没关系,从源码来看,create 方法肯定是存在的 0_0

whxaxes commented 5 years ago

@huyuyang 你部署的时候不是覆盖式的就会导致这个问题,因为 messenger 从 js 改成了同名目录结构,你看一下你服务器里 egg 下的 lib 下肯定存在一个 messenger.js 和一个 messenger 目录

huyuyang commented 5 years ago

@whxaxes 是的,确实是跟你说的一样。那么导致这个问题的原因应该就是这个。跟健康检查没关系。

huyuyang commented 5 years ago

感谢各位大佬的解答,终于解决了这个问题。

atian25 commented 5 years ago

非覆盖部署很危险