Nuxt.js+express该如何部署【已解决】
发布于 1 年前 作者 justyeh 5904 次浏览 来自 问答

我最近决定上线一个Vue SSR项目,使用的是Nuxt.js+express+mysql,代码已经有个样子了,于是决定到线上跑一下! 我是这样构想的: 将项目在Linux上跑起来(使用PM2),使用Nginx将80端口代理到node端口上! 我遇到了以下问题: 在我的电脑本地,使用以下命令可以正常运行:

npm run build
npm start

但是使用pm2时确跑不起来,这是脚本:

pm2 start npm --name 'justyeh' -- start

错误日志里面包含了许多这样的信息:

D:\NODEJS\NPM.CMD:1
(function (exports, require, module, __filename, __dirname) { :: Created by npm, please don't edit manually.
                                                              ^
SyntaxError: Unexpected token :
    at createScript (vm.js:56:10)
    at Object.runInThisContext (vm.js:97:10)
    at Module._compile (module.js:542:28)
    at Object.Module._extensions..js (module.js:579:10)
    at Module.load (module.js:487:32)
    at tryModuleLoad (module.js:446:12)
    at Function.Module._load (module.js:438:3)
    at Object.<anonymous> (C:\Users\yeh\AppData\Roaming\npm\node_modules\pm2\lib\ProcessContainerFork.js:53:21)
    at Module._compile (module.js:570:32)
    at Object.Module._extensions..js (module.js:579:10)

我在纠结的是部署的思路是否正确,如果错了,大家能否为我提供一个思路; 如果这样思路是对的,如何解决这个问题?

12 回复

这是我的package.json:

"scripts": {
    "dev": "backpack dev",
    "build": "nuxt build && backpack build",
    "start": "cross-env NODE_ENV=production node build/main.js",
    "precommit": "npm run lint",
    "lint": "eslint --ext .js,.vue --ignore-path .gitignore .",
    "generate": "nuxt generate",
    "nuxt-build": "nuxt build",
    "nuxt-start": "nuxt start"
  }

先到你的project目录,再执行

pm2 start npm --name 'justyeh' -- start

感觉你的 package.json 有问题吧,同样是基于 nuxt express 的项目,刚刚上线,已经部署到阿里云上 pm2 启动的,nginx 做反向代理,Letencrypt 做 SSL https://github.com/awesomes-cn/news

@nickleefly 我是在项目目录里执行的

@hxh1246996371 你的站点挂了

话说之前玩nuxt 感觉路由有bug哦 经常会404. 浏览器里通过nuxt-link点击后能够重定向到。 如果分享url给别人 打开就是404 不知道解决了没

谢谢的大家回复! 我的部署方法是正确的,导致错误的原因是线上环境的eslint检查导致的,我去掉eslint就好了!

你好,我也碰到这个问题了,但是我的eslint放在if (ctx.dev && ctx.isClient)中啊,而且注释后重新build也还是报相同的错误

回到顶部