zhangyuang / ssr

A most advanced ssr framework support React17/React18/Vue2/Vue3 on Earth that implemented serverless-side render specification.
http://doc.ssr-fc.com/
MIT License
2.59k stars 283 forks source link

无法生产环境(production)启动 #276

Closed Jv-Juven closed 1 year ago

Jv-Juven commented 1 year ago

提问前请确认以下几点信息,否则你的问题将不会被解答

详细描述你的问题

本人基于windows系统开发,打包出现一些问题,请指教

npm run prod的问题

简单来说,是本地开发正常,本地跑npm run prod命令控制台会不断弹出且关闭cmd窗口 使用官方的安装命令安装了midwayjs + react18的模板,在开发环境启动时能够监听6002端口,配置文件/config.ts如下:


import type { UserConfig } from 'ssr-types'

const userConfig: UserConfig = { serverPort: 6002, mode: 'csr', }

export { userConfig }

依赖的包,有一个是自己开发的npm包(可能的原因),并发布在公司的私有仓库,本地启动运行时正常。
运行`npm run build`命令后会不断弹出且关闭cmd窗口。
pm2.config.js文件内容如下:
```ts
module.exports = {
  apps: [
    {
      name: 'ssr-prod',
      script: 'bootstrap.js',
      exec_mode: 'cluster',
      max_memory_restart: '500M',
      env: {
        NODE_ENV: 'production',
        SERVER_PORT: 6002,
      },
    },
  ],
}

npm run sit的问题

当跑这个脚本,没有显示错误 自己增加一个脚本,用于集成测试环境打包,"sit": "ssr build && pm2 start pm2.config.sit.js", pm2.config.sit.js内容如下:

module.exports = {
  apps: [
    {
      name: 'ssr-sit',
      script: 'bootstrap.js',
      exec_mode: 'cluster',
      max_memory_restart: '500M',
      env: {
        NODE_ENV: 'production',
        MIDWAY_SERVER_ENV: 'sit',
        SERVER_PORT: 6002,
      },
    },
  ],
}

运行npm run sit时一切正常,cmd窗口只会闪两次,能打包成功,且启动没有错误提示(pm2 log查看),bootstrap.ts文件内容如下:

const { Bootstrap } = require('@midwayjs/bootstrap')
const { loadConfig } = require('ssr-common-utils')

const { serverPort } = loadConfig()
console.log('启动端口serverPort', serverPort)
Bootstrap.configure({
  globalConfig: {
    koa: {
      port: serverPort,
    },
  },
})
  .run()
  .then((res) => {
    console.log('启动成功~', res)
  })
  .catch((err) => {
    console.log(err.toString())
  })

then能执行,但无法打开http://127.0.0.1:6002,查看6002端口,没有被监听到。

期望的结果

本地运行以上两个命令,能通过 http://127.0.0.1:6002 打开页面,且运行正常。

当前使用的版本

"@midwayjs/core": "^3.0.0", "@midwayjs/decorator": "^3.0.0", "@midwayjs/koa": "^3.0.0", "ssr-common-utils": "^6.0.0", "ssr-core": "^6.0.0", "ssr": "^6.0.0", "ssr-plugin-midway": "^6.0.0", "ssr-plugin-react18": "^6.0.0", "ssr-types": "^6.0.0", 不要贴 package.json 用 yarn list "ssr*" 来查看版本。同时建议熟读semver 规则并且知道怎么安装最新依赖!

复现仓库地址

用于公司内部开发的项目,暂时不便提供复现代码。 超过一行代码能描述的问题必须提供复现地址, 用默认的 example 给最简单的复现代码不要给包含着一堆业务代码的仓库

你本人对问题可能的原因判断(如果你能大概判断的话)

猜测是运行启动脚本时有异常,但没抛出来事,导致实质启动失败。也可能是自己的npm包出现问题,曾经试过删除相关引用也无济于。

zhangyuang commented 1 year ago

提供可复现最简仓库 and这里不需要设置env.server_port