我最近决定上线一个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)
我在纠结的是部署的思路是否正确,如果错了,大家能否为我提供一个思路; 如果这样思路是对的,如何解决这个问题?
这是我的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
@solarhell 求浏览器版本
@hxh1246996371 Chrome 59.0.3071.104
@solarhell 谢谢 我看看
@nickleefly 我是在项目目录里执行的
@hxh1246996371 你的站点挂了
话说之前玩nuxt 感觉路由有bug哦 经常会404.
浏览器里通过nuxt-link
点击后能够重定向到。 如果分享url给别人 打开就是404
不知道解决了没
谢谢的大家回复! 我的部署方法是正确的,导致错误的原因是线上环境的eslint检查导致的,我去掉eslint就好了!
你好,我也碰到这个问题了,但是我的eslint放在if (ctx.dev && ctx.isClient)中啊,而且注释后重新build也还是报相同的错误