淘先锋技术网

首页 1 2 3 4 5 6 7

解决Node.js项目运行报错SyntaxError: Unexpected token …(解决Node.js低版本不支持…操作符的问题)

目录

问题

我们的天猫精灵服务是用Node.js做的,今天在该项目中添加一个包nzh,我是在package.json里面直接添加的,然后运行npm install,运行后会安装nzh包,同时也会更新其他需要更新的包
然后Debug,测试通过没有问题,接着发布到服务器上。
服务器上运行forever start xx.js,竟然stopped。
看了下log,竟然报错了,测试环境没有问题,生产环境却报错了。
报错如下:

/xxx/node_modules/mqtt/node_modules/ws/lib/websocket.js:345
      ...options
      ^^^
SyntaxError: Unexpected token ...
    at Object.exports.runInThisContext (vm.js:76:16)
    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 Module.require (module.js:497:17)
    at require (internal/module.js:20:19)
    at Object.<anonymous> (/xxx/node_modules/mqtt/node_modules/ws/index.js:3:19)
    at Module._compile (module.js:570:32)
    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 Module.require (module.js:497:17)
    at require (internal/module.js:20:19)
1234567891011121314151617181920

SyntaxError: Unexpected token ...
翻译中文为
语法错误:意外的令牌...
很明显报错的为...,语法错误,这肯定是ES特性不支持的问题,不支持那就是Node.js的版本的问题

解决

  • 查看服务器Node.js版本为6.9.2
  • 查看测试环境Node.js版本为12.13.1

果然版本不一致,考虑到服务器的Node.js版本确实有点低了,决定升级到最新稳定版本

  1. 安装Node.js版本管理工具
npm install -g n
1
  1. 安装最新稳定版 node
npm lts
1
  1. 使用 n 切换版本
n
1

在这里插入图片描述
\4. 查看Node.js版本

奇怪了,没有切换成功
通过搜索找到了原因:

n 默认安装路径是 /usr/local,若你的 node 不是在此路径下,n 切换版本就不能把bin、lib、include、share 复制该路径中,所以我们必须通过N_PREFIX变量来修改 n 的默认node安装路径。

具体请参考
node.js版本管理工具n无效的原理和解决方法

  1. 启动Node.js服务
forever start xxx.js
1

启动成功了,解决完成。

思考

问题虽然是解决了。
或许你会有更多疑问了❓❓❓

  • …操作符是什么?
  • …操作符真的不支持node v6.9.2吗?

考虑到…操作符要介绍的内容较多,就不在这篇文章中写了。
请看下篇文章《JavaScript…延展操作符(Spread operator)》

支持🤟

🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟

  • 我会持续编写文章,保持每周至少一篇文章。💪
  • 有时候编写一篇文章需要大量时间。💪
  • 您只需一秒即可完成【点赞👍或关注❤️】。💪
  • 您的支持将给与我更大的动力。💪

🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟