针对【create-nuxt-app新版本v3.2.0】构建项目时没有server配置以及运行后弹出收集匿名数据选项等问题的解决方法

本文参考官方文档的具体位置:

dev配置属性:https://www.nuxtjs.cn/api/configuration-dev

nuxt命令:https://www.nuxtjs.cn/guide/commands

 

问题一:create-nuxt-app现在已经升级到3.2.0版本了,该版本在构建项目时已经不会自动搭建server文件了,如何配置该文件呢?

这是本文构建时的选项(本文是以后端渲染SSR为前提解决服务端配置的,单页面应用在上面提到的nuxt命令这一章节也有提到

0、到根目录下,先 npm run dev 一遍,生成 .nuxt 文件夹,这一步很重要!

1、打开nuxt.config.js文件,在配置中加上如下配置:

module.exports = {
  dev: process.env.NODE_ENV !== 'production'
}

2、在根目录下创建 server.js 文件,并复制以下内容(这是官方网站给的标准server配置,但是为了更好的对比该文件的运行状态,本文把默认端口改成了3333,如下)

const { Nuxt, Builder } = require('nuxt')
const app = require('express')()
const port = process.env.PORT || 3333

// 传入配置初始化 Nuxt.js 实例
const config = require('./nuxt.config.js')
const nuxt = new Nuxt(config)
app.use(nuxt.render)

// 在开发模式下进行编译
if (config.dev) {
  new Builder(nuxt).build()
}

// 监听指定端口
app.listen(port, '0.0.0.0')
global.console.log('我搭建的服务器运行于 localhost:' + port)

3、打开 package.json 文件,按照官方 https://www.nuxtjs.cn/guide/commands 文档提示,将dev的脚本配置如下:

{
  "scripts": {
    "dev": "NODE_ENV=development nodemon server.js"
  }
}

4、上面的脚本中用的是nodemon,所以要安装nodemon

npm i nodemon

5、运行 npm run dev 之后,报了下面的错,原因是export是ES6的语法,nuxt不能识别!

6、为了解决上面的ES6语法问题,要在根目录下安装babel-cli、babel-preset-env

执行 npm i babel-cli babel-preset-env     并且在根目录下创建 .babelrc 文件,输入下面内容

{
    "presets":["env"]
}

7、最后,在 package.json 的脚本配置中,在 "dev" 脚本后面加上  "--exec babel-node" 后缀

"scripts": {
    "dev": "NODE_ENV=development nodemon server.js --exec babel-node"
  }

8、运行 npm run dev,然后你会发现变成下图中这样卡住不动了,localhost:3333根本打不开

为了解决这个问题,我先把nuxt.config.js文件的格式从export default (ES6语法) 改成module.exports (commonJS服务端语法),记得加上eslint备注,否则会报错,如图所示

9、保存修改之后,重新运行 npm run dev ,成功!

我尝试了下,nuxt.config.js只能用commonJS的语法写,反正改的地方也不大!如果想验证ES6能否被识别,可以尝试修改server.js文件中的require关键字,改成ES6的import ,如果运行成功,就说明可以识别!

10、打开 localhost:3333,成功!但是。。。

注意:每次运行时,nuxt都会询问Are you interested in participation? 

如果不选的话,刷新浏览器内容是刷不出来的,页面会变成  Cannot GET / ,但是每次都要选真的好烦啊!


问题二:每次运行时,nuxt都会有一个数据收集选项,如何在每次运行时能忽略该问题?

解决方法:

打开 node_modules > @nuxt > telemetry > dist > module.js 

之后在运行时就不会有烦人的 Are you interested in participation? 了!

最后,记得把生产模式的脚本"start"改成如下图所示,毕竟开发完毕之后要线上正式运行的!生产模式和开发模式的区别就不介绍了!

 

  • 17
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
为什么要学习服务端渲染 nuxt.js ? 现在我们的项目大多数都是SPA(单页面应用),在实际开发过程中单页面应用比之前的模板渲染要好很多,首先单页面应用是前后端分离,架构清晰,前端负责交互逻辑,后端负责数据,前后端单独开发,独立测试。但是,SPA不利于SEO(搜索引擎优化)。让搜索引擎更为信任该网站,通过提升排名获得更多网站流量,对于某些类型的网站是非常有必要的。目前大部分的Vue项目本质是 SPA 应用,React、Angular也都是SPA应用。SPA应用广泛用于对SEO要求不高的场景中。在我们开发的过程中,我们有 SEO 的需求,我们需要搜索引擎更多地抓取到我们的项目内容,此我们需要SSR。SSR保证用户尽快看到基本的内容,也使得用户体验性更好。 Nuxt.js 是一个 Node 程序,基于vue.js开发的一套服务端渲染的框架,必须使用 Node 环境。我们对 Nuxt.js 应用的访问,实际上是在访问这个 Node.js 程序的路由,程序输首屏渲染内容 + 用以重渲染的 SPA 的脚本代码,而路由是由 Nuxt.js 约定好的 pages 文件夹生成的,开发只需要遵循一定的约定,直接使用vue.js开发我们项目也是非常轻松的。 课程案例 (1) HOME PAGE (2) Jokes Page  (3)About Page  课程概述 在本课程中,大喵将使用 nuxt.js + bootstrapVue + json-server 开发实战性质一个入门级项目,带着大家来体验服务端渲染(SSR )项目构建的过程;介绍 nuxt.js项目目录的结构,每个文件夹和文件的基本概念和作用,以及nuxt.config.js 配置文件的基本介绍;页面公共结构处理,路由页面跳转配置处理;axios 接口请求;带着大家来熟悉及掌握 bootstrapVue UI组件库的使用;

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值