vue import外部js和npm包区别在哪里,为什么直接引入npm包可以成功,而把js拿到src下面就报错,如下

1. 如何复现

用Vue-cli3构建create一个项目,把popper.js放到src目录下,popper.js的规范为umd,代码如下截图

图片描述

然后在App.vue 中引入

import Popper from './popper.js'

图片描述

另一种通过npm包安装时

npm install popper.js --save

然后在App.vue 中引入

import Popper from 'popper.js/dist/umd/popper.js'

这个popper.js文件和上面放在src的js文件是一模一样的,只是位置不同,
但是执行的结果却是不一样的,如下图,能够正常导出
图片描述

这是为什么呢? 同样是import引入,而npm包引入的情况下,this和exports都是空对象{},而直接放到src引入时this和
exports都是undefined导致报错

阅读 7.4k
2 个回答

回答应该是错的 删除会减分 你就忽略吧

刚刚好我也遇到这个问题了,在发布包之前要使用 @babel/plugin-transform-modules-umd 插件进行转码。

module.exports = {
  plugins: ['@babel/plugin-transform-modules-umd'], //添加这行
};

具体详情可以看这篇文章 https://juejin.im/post/6844903826592366600

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题