egg部署阿里云成功之后,在外网访问不到
[egg-scripts] Save log file to /root/logs
[egg-scripts] Wait Start: 1...
[egg-scripts] egg started on http://127.0.0.1:7001
原本是这个问题,后来我看网上大佬说把启动配置项的hostname改成'0.0.0.0'
第一次修改
我就从官网上面找了这个
// config/config.default.ts
import { EggAppConfig, EggAppInfo, PowerPartial } from 'egg';
export default (appInfo: EggAppInfo) => {
const config = {} as PowerPartial < EggAppConfig >;
// ...
return {
...config,
...bizConfig,
};
};
exports.cluster = {
listen: {
port: 7003,
hostname: '0.0.0.0', // 运行外网访问
},
};
这里我特意将端口改成7003,可以在Centos服务器上看是否生效,如果端口被改成了7003,则说明该语句生效,但是,在重启服务后,还是最开始的这个
[egg-scripts] Save log file to /root/logs
[egg-scripts] Wait Start: 1...
[egg-scripts] egg started on http://127.0.0.1:7001
第二次更改
我在网上找到一些资料说,可以这么写
import { EggAppConfig, EggAppInfo, PowerPartial } from 'egg';
export default (appInfo: EggAppInfo) => {
const config = {} as PowerPartial < EggAppConfig >;
// ...
config.cluster = {
listen: {
port: 7003,
hostname: '0.0.0.0',
},
};
// ...
return {
...config,
...bizConfig,
};
};
但是还是端口还是在7001,说明这条语句没有生效
求求大佬相救
补充
环境:Centos服务器
语言:egg框架和typescript
如果是第二次修改时的代码,我在服务器环境下使用 npm run dev
可以实现hostname和端口的改变
2020-04-30 00:07:06,590 INFO 17475 [master] egg started on http://0.0.0.0:7003 (1797ms)
但是使用npm start
则不可以改变
如果是第一次修改的代码,在服务器运行npm run dev
和npm start
都不可以得到hostname和端口改变的结果,地址仍然为http://127.0.0.1:7001
package.json
{
"name": "eggdemo",
"version": "1.0.0",
"description": "",
"private": true,
"egg": {
"typescript": true,
"declarations": true
},
"scripts": {
"start": "egg-scripts start --daemon --title=egg-server-eggDemo",
"stop": "egg-scripts stop --title=egg-server-eggDemo",
"dev": "egg-bin dev",
"debug": "egg-bin debug",
"test-local": "egg-bin test",
"test": "npm run lint -- --fix && npm run test-local",
"cov": "egg-bin cov",
"tsc": "ets && tsc -p tsconfig.json",
"ci": "npm run lint && npm run cov && npm run tsc",
"autod": "autod",
"lint": "eslint . --ext .ts",
"clean": "ets clean"
},
"dependencies": {
"egg": "^2.6.1",
"egg-alinode": "^2.0.1",
"egg-scripts": "^2.6.0",
"egg-view-arttemplate": "^2.0.2",
"egg-view-ejs": "^2.0.1",
"silly-datetime": "^0.1.2"
},
"devDependencies": {
"@types/mocha": "^2.2.40",
"@types/node": "^7.0.12",
"@types/supertest": "^2.0.0",
"autod": "^3.0.1",
"autod-egg": "^1.1.0",
"egg-ci": "^1.8.0",
"egg-bin": "^4.11.0",
"egg-mock": "^3.16.0",
"tslib": "^1.9.0",
"eslint": "^6.7.2",
"eslint-config-egg": "^8.0.0",
"typescript": "^3.0.0"
},
"engines": {
"node": ">=8.9.0"
},
"ci": {
"version": "8"
},
"repository": {
"type": "git",
"url": ""
},
"eslintIgnore": [
"coverage"
],
"author": "",
"license": "MIT"
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
已解决
看了下官方 issues ,发现是要
npm run tsc
然后再npm start
....第二次修改的配置文件是对的。第一次完全错误的。
第二次修改后,本地生效是因为,npm run dev 用的egg-bin启动的。egg-bin内置了ts-node,直接编译ts,所以你修改ts文件后启动,直接生效。
你部署到服务器上,npm start用的是egg-scripts启动。得先执行npm run tsc把ts文件编译成js文件,然后再执行npm start。服务器环境只读取js文件(具体为啥,egg文档上“教程--typeScript”那块有写)。
没看明白你到底是要问怎么改端口。还是在问阿里云怎么外网访问。
阿里云外网访问需要在安全组配置的,开了对应的端口才可以。