vue-cli3 项目启动报错 unexpected token... 居然是因为node版本过低

最近在接手一个vue-cli3搭建的app项目的新需求时, 发现自己拉下代码之后启动一直报错,

报错是 unexpected token... 

对应的报错文件是  项目\ node_modules\ read-pkg\index.js , 具体是里面有一个...options  的运算操作报错,导致项目起不起来

后面捣鼓一圈, 走了点弯路, 还是把问题解决了, 问题的解决过程如下:

 

尝试一:

最开始的时候 看到... 运算符不能解析, 以为是babel没有配置好, 自己捣鼓了一圈配置, 结果发现怎么配置都依然启动报同样的错, 后面一问,其他人项目启动都没有问题,大家都是拉的一样的代码,看来不是babel配置问题;

 

尝试二:

后面看了一下vue.config.js 的配置, 配置里面有一个选项是transpileDependencies, 官网上的解释是这样的:

默认情况下 babel-loader 会忽略所有 node_modules 中的文件。如果你想要通过 Babel 显式转译一个依赖,可以在这个选项中列出来, 鉴于 现在的报错是因为node_modules里面的 read-pkg 文件夹里面index.js 文件可能无法转码成功, 所以在vue.config.js 的文件里面将transpileDependencies  这一项的值配置成了 [ node_modules/read-pkg], 但是配置完成之后还是报错

 

尝试三:

目前推测的两种可能都没有解决问题, 后面去网上搜了一圈, 发现其他人也有类似经历, 遇见报错' Unexpected token { '

然后git  issues 上面给出的解决方案是 npm 和node.js版本过低, 需要对npm 和node进行升级更新。

赶紧检查了一下我node的版本, 因为是两年前进公司安装的node, 所以版本还是8.2.1,后面一直没有主动去升级更新,所以现在需要升级╮(╯▽╰)╭

升级的解决方案如下:

npm 升级的命令行:

npm update -g

 

node.js升级的命令行如下:

npm install -g n

n stable  / n latest

 

以为到这里问题就解决了?

结果执行npm install -g n 报错

这时需要强制执行:

npm install -g n --force

然后执行 n stable

又报错: 

bash: n: command not found  ╮(╯▽╰)╭

 

这熟悉的经历是  node的版本管理n模块在公司电脑全局安装之后无法使用, 没办法, 赶紧在 alias.bashrc 文件里面配置了一行:

alias n = 'node/d/user/(username)/AppData/Roaming/npm/node_modules/bin/n'

 执行 source alias.bashrc 之后

然后执行  n lates/ n stable 发现还是都报错, 后面了解到, 在我目前的公司使用命令行升级,是无法实现node版本更新的, 只能去官网下载最新node版本包然后重新安装 ╮(╯▽╰)╭

 

最后, 下载node 最新版本之后 查看版本号

node -v

v10.16.3

 

再次尝试启动项目, 这次终于启动成功~~坎坷的项目启动之路 终于结束✿✿ヽ(°▽°)ノ✿

 

最后, 去官网上又确认了一下, 发现对于vue-cli3项目,node的使用版本是有要求的,需要在8.9 以上。

 

 

以上就是这次项目启动报错问题解决的全过程, 记录一下, 希望能给有需要的人一点参考~~

 

Uncaught SyntaxError: Unexpected token '.' 这个错误通常是由于你在 Vue.js 项目中使用了 ES6 或者新的 JavaScript 特性,而目标浏览器(在这种情况下可能是版本的 Google Chrome)不支持这些特性导致的。要解决这个问题,你可以采取以下几种方法: 1. **Babel 编译**: 使用 Babel 将 Vue 项目中的新语法转换成旧版本浏览器能理解的代码。安装 `@vue/cli-plugin-babel` 并配置它以处理 `.babelrc` 文件,确保包含了对 `transform-runtime` 和相应的插件如 `@babel/preset-env` 的支持。 ```bash npm install --save-dev @vue/cli-plugin-babel @babel/core @babel/preset-env ``` 在 `vue.config.js` 中启用 babel 转换: ```javascript module.exports = { chainWebpack: (config) => { config.module.rule('js') .test(/\.js$/) .use('babel-loader') .loader('@vue/cli-service/node_modules/babel-loader') .options({ presets: ['@babel/preset-env'], // 如果需要转码特定的新特性 plugins: [['@babel/plugin-transform-runtime', { corejs: 3 }]], }); }, }; ``` 2. **polyfill库**: 对于一些常用的未兼容特性,如数组推导、Promise 等,可以引入 polyfill 库,例如 `core-js`, `es6-shim` 或者 `babel-polyfill`,放在入口文件(`main.js`)的最上方。 3. **检查代码**: 检查项目中的代码,特别是 import/export、async/await、模板字符串等,避免直接使用它们,除非明确设置了相应的转义规则。 4. **逐步升级浏览器兼容**: 虽然这样做可能会让项目变得复杂,但如果必要,可以利用现代浏览器的特性检测工具(如 `Modernizr`),为不支持的浏览器提供备用方案或渐进增强的体验。 记得在项目运行之前测试,确保兼容版本浏览器。如果你还有其他关于这个错误的具体问题,可以详细描述以便进一步帮助。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值