nuxt.js项目部署问题

clipboard.png
package.json中的配置如下

"scripts": {
    "dev": "nuxt",
    "build": "cross-env NODE_ENV=production nuxt build && nuxt start",
    "start": "nuxt start",
    "server": "cross-env NODE_ENV=production nodemon server --exec babel-node --presets es2015,stage-2",
    "online": "babel server -d dist --presets es2015,stage-2",
    "serve": "cross-env NODE_ENV=production pm2 start dist/index.js",
    "generate": "nuxt generate",
    "lint": "eslint --ext .js,.vue --ignore-path .gitignore .",
    "precommit": "npm run lint"
  }

如果打包后的.nuxt文件夹只有这些文件并没有图片等静态资源,压根就跑不起来啊,这里部署的时候需要哪些文件夹上传到服务器

阅读 7.2k
6 个回答

这只是一些中间文件,用来打包出最终文件的

所有文件,包含node_modules也必须上传到服务器
因为是服务端渲染,所以这些组件也是全部需要的

你可以在本机用pm2先跑起来试试

昨天才部署成功,具体原理也没搞明白

楼主,你好!下面摘自:eggjs 应用部署

JavaScript 语言本身不需要编译的,构建过程主要是下载依赖。但如果使用 TypeScript 或者 Babel 支持 ES6 以上的特性,那就必须要这一步了。

一般安装依赖会指定 NODE_ENV=productionnpm install --production 只安装 dependencies 的依赖。因为 devDependencies 中的模块过大而且在生产环境不会使用,安装后也可能遇到未知问题。

$ cd baseDir
$ npm install --production
$ tar -zcvf ../release.tgz .

构建完成后打包成 tgz 文件,部署的时候解压启动就可以了。


如有帮助,麻烦点击下采纳,谢谢~

图片等静态资源在 .nuxt/dist/目录里面
nuxt项目上线后,是启动的 node express服务器,利用nginx等服务把请求转发到对应的node端口就可以了
上线需要的文件只有 .nuxt 和 build 两个文件夹,当然跑node 服务,还需要node_modules(这个也可以打包到一起,如果太大,可以在服务器安装依赖)
由于我们公司的服务器资源有限,不能在服务器上build文件,我们选择本地build,然后上传打包后的文件到服务器,服务器上再去拉项目代码(git),同时解压上传的build+.nuxt包,然后用pm2启动node服务,这样就可以访问了
本地执行的代码

"scripts": {
    "dev": "backpack dev",
    "build": "nuxt build && backpack build"
    }
//shell脚本
rm -rf .nuxt/
rm -rf build/
rm -rf node_modules/
cnpm install
npm run build
rm -rf new.tar.gz
tar -zcvf new.tar.gz .nuxt/ build/
scp tar包到服务器项目目录

服务器执行脚本

cd 到项目目录
git pull
cnpm install
rm -rf .nuxt/ build/
tar -zxvf new.tar.gz
pm2 -o /dev/null start build/main.js --name 项目名称

如果您的服务器支持线上编译,打包
你可以在 package.json中直接设置 npm 命令

"start:test": "cross-env _ENV=test pm2 start build/main.js --node-args='--harmony' --name 'project_name'",
"start:production": "cross-env _ENV=production pm2 start build/main.js --node-args='--harmony' --name 'project_name'"

服务器根据不同环境执行不同的脚本即可

推荐问题
宣传栏