刚开始用node.js做一些与前端交互的脚本就遇到了问题,是关于CommonJS文件与ES6模块转换的冲突。
以下是我的node.js 和 对应node.js自动安装的npm版本信息
我在导入axios包的时候使用了以下的import语句
结果就出现了以下的bug
我在网上找了很多的资料,总结一下原因,大概就是自从ES6发布以后,require导入模块语句渐渐取代了原先使用CommonJS 和 AMD两种模块加载规范, 前者用于服务器,后者用于浏览器(按我的理解就是后端和前端,AMD是为了解决客户端加载页面模块的速度取决于服务端的同步问题而产生的异步通信规范),虽然node.js现在大部分都已经能通过一些手段同时支持import和require语句,但是那些例如babel、node --experimental-modules XX.mjs都没能帮我真正解决问题(也可能是我操作的问题)
最后我发现其实不用那么复杂,只要把那句import语句换成require然后赋值给const常量即可解决问题。
const axios = require('npm/node_modules/axios');
在终端运行一下
终于成功了。。。。。。。就这个bug我找了三个小时 ,有种柳暗花明又一村的感觉啊害