Node.js引入axios报SyntaxError: Unexpected identifier错误如何解决?
问题描述
我的test.js文件内容如下:
const axios = require('axios'); console.log('test');
已执行npm install安装依赖,文件夹结构为:
test node_modules package.json package-lock.json test.js
移除第一行const axios = require('axios');后,执行nodejs test.js可正常运行并打印test;保留该行则报错,错误信息如下:
/home/username/test/node_modules/axios/index.js:1 import axios from './lib/axios.js'; ^^^^^ SyntaxError: Unexpected identifier
我的环境版本:
node -v v18.4.0 nodejs -v v10.19.0 npm -v 8.12.1
请问该如何解决这个错误?
解决方案
使用正确的Node.js版本执行脚本
你的机器上同时存在两个Node.js版本:node对应v18.4.0(支持ES模块语法),nodejs对应v10.19.0(不支持顶级import语法)。报错根源是用低版本的nodejs命令执行,而新版axios已采用ES模块的import语法,Node.js 10无法识别。
直接执行node test.js即可正常运行,无需修改代码或依赖。安装兼容Node.js 10的axios版本(若必须使用v10)
如果你因特殊需求必须用nodejs(v10.19.0)执行,需安装支持CommonJS且兼容Node.js 10的旧版axios,比如0.27.x版本:npm uninstall axios npm install axios@0.27.2安装完成后,再用
nodejs test.js执行就不会报错了。
内容的提问来源于stack exchange,提问作者parsecer
相关产品推荐
相关产品推荐

