注:
- 我已阅读 通过 npm 使用 protobuf.js 与 我能否在 Cocos Creator 中使用 npm 包…… 两篇文章,并正常引入了一些包;
- 我并非在 Cocos 中遇到了无法使用 npm 包的问题,而是想进一步了解,为什么 Cocos 对于 npm 包的引入和常规的前端工程(例如 Webpack+React)有所不同。
- 我的 CC 版本为 3.6.1 (当然我认为这并不重要)
想请教一下,为什么对于类似 axios 这样的包需要使用 import axios from 'axios/dist/axios.min.js'
而非 import axios from 'axios'
。
我知道后者会引发如下的报错:
- 引入
axios
包会引入axios/lib/axios.js
而非axios/dist/axios.min.js
,前者会进一步引入一个form-data
包,而这个包只会也只需要在 NodeJS 环境下需要,而 Cocos 在编译脚本时使用了 NodeJS 环境(这是我猜测的,理由是代码中使用require
编译不会报错)而在加载编译目标文件(js文件)时因为找不到form-data
包而报错:
但我觉得(只是我个人认为,可能不正确)常规的前端项目构建应当是相类似的构建方式(即使用 webpack 等工具对项目进行编译,生成的目标文件供前端使用),为什么没有出现像 Cocos 中这样无法直接引用包名的问题呢?
说得简单一点就是,为什么平时写前端可以直接 import 'axios'
,但是到了 Cocos 中就不可以?是故意这样设计,还是说这实际上是一个问题呢?