# NUXT-PM2
**Repository Path**: lys5057/nuxt-pm
## Basic Information
- **Project Name**: NUXT-PM2
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2020-12-10
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# windows下pm2运行nuxt项目遇到的坑
> nuxt/ pm2
## 1. 什么是nuxt ?
- 懒得讲了....(总之就是奔着SSR来的)
## 2. 什么是 pm2 ?
- 略..... (往下看吧)
## 3. nuxt工程安装过程中的选择
```
# nuxt 创建工程
# npx create-nuxt-app <项目名>
npx create-nuxt-app nuxtapp
```
### 3.1 我们看看安装时选择不同的选项,项目有什么不同
- 3.1.1 选择包管理器(Choose the package manager): npm- 略...
- 3.1.2 选择UI框架

`UI框架选择与否的差异`

区别就在于plugins文件夹下的js文件,和nuxt.config.js中的配置不同(没什么影响)
- 3.1.3 选择自定义服务器框架

`服务器框架选择与否的区别(区别很大)`


区别就在于
1. 安装了自定义服务器框架(例如koa), 会多一个server文件夹
2. package.json 中项目的启动方式不同(dev,start 命令)
3. 没有自定义服务器是靠nuxt start启动项目, 有自定义服务器是靠 node server/index.js 启动项目的(重点)
- 3.1.4 选择渲染模式

`渲染模式选择的区别在项目中的体现`

主要体现在nuxt.config.js中mode的值(SSR: 'universal',SPA: 'spa'),目录结构上本人暂时没发现明显受影响的不同. 至于打包的区别在此不讲了...
### 3.2 以SSR模式打包,使用pm2 后台启动的坑
- 3.2.1 pm2 安装 (略)
- 3.2.2 pm2 后台启动nuxt
`咱们先看看坑在哪?`
在网上搜到的大部分命令无非是 pm2 start npm -- start
但是这条命令并没有效果
在网上搜了一圈有两个比较成功的案例
1. [Node pm2如何做进程管理Nuxt项目](https://www.xiangzongliang.com/blogContent?b=79)
2. 连接找不到了,通过安装node-cmd,用pm2 调用器脚本文件 运行npm start 命令
那么坑在哪?


一堆报错+ 各种不如意
上面成功案例(1) 的缺点是随着nuxt版本的更新 nuxt在node_modules文件及文件夹名称变动可能带来的影响
使用node_cmd 那个案例有一个一直关不掉的黑窗口
### 3.3 解决办法
- 3.3.1 发现[1]网上的案例都没有安装自定义服务器框架

缺少server 文件夹(可能时他们在构建工程时没有选择服务器框架吧,而本人学习node时了解过koa,所以在构建工程时总不自觉的选择koa)
server文件加下就一index.js,而且构建工程时选择自定义服务器框架的工程的package.json中的工程启动方式很引起了我的注意,

于是我将server文件夹也整个拷贝了过去,然后配置了progresses.json
```
pm2 start progresses.json
#progresses.json
{
"name": "nuxtapp",
"script": "./server/index.js",
"cwd": "./",
"watch": [
".nuxt",
"server",
"static"
],
"ignore_watch": [
"node_modules",
"logs",
"public"
],
"watch_options": {
"followSymlinks": false
},
"error_file": "./logs/app-err.log",
"out_file": "./logs/app-out.log",
"env": {
"NODE_ENV": "production",
"HOST": "127.0.0.1",
"PORT": "3001"
}
}
```
结果[1]:

- 3.3.1 发现[2] 安装了自定义服务器框架打包结束时指定的有入口

除了[1],到底是哪一个呢?

改配置运行试试....
结果都不是!!!!!算了!!!
## 总结:
> pm2 后台运行nuxt项目,项目构建时要引入一个自定义服务器框架,部署时将server文件夹也拷贝过去,pm2 运行server/index.js, 即可成功!