-
Notifications
You must be signed in to change notification settings - Fork 2.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
es6 default #338
Comments
v1.4.2 支持了 esm,你现在默认引入的应该是 bscroll.esm.js |
正常import就可以 |
我大概看了下 |
我之前错了。并没有OK,问题依旧 |
事实上, |
处 {
__esModule: true,
default: BScroll
} 所以得到的 {
default: {
__esModule: true,
default: BScroll
}
} |
你的 webpack 什么版本,我们所有项目都是用 webpack 构建的,为啥没有你这个问题? |
没有这个配置 |
webpack 2+ 版本都没有这个问题 |
我的构建方式和 Vue 是一样的,生成的代码结构也是一样,并不是 Rollup 的问题 |
要么amd方式不行,要么es和commonjs方式不行,只能选其一 |
而我的ts代码是一份,只是在开发的时候编译为umd的,使用amd加载器加载,部署的时候编译为esnext的并使用webpack+babel-loader打包 |
开发阶段为啥要编译成 umd?� |
或者你建一个项目依赖一下 Vue,看看有没有类似的问题 |
方便并且快。 |
我确定是跟vue没关系的。就是rollup和ts的问题,上次发过这个问题讨论的链接了。 |
副使用也不很大,就是在 |
如果你不用 TS,还有这个问题吗? |
我对比过ts生成的umd和rollup生成的umd格式,就是差这个 Object.defineProperty(exports, "__esModule", { value: true }); 而babel会根据这个判断 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 转换代码 |
你先按我说的,项目中引入一下 Vue,试试能不能正常引用,因为 Vue 也是对 TS 做了支持,也是 Rollup 打包,输出的也是 esm。 |
试了,不行 |
�那你先 fork 一份发布到你们内部的私服上吧,等待 TS 或者 Rollup 修复这个问题。 |
@taoqf 你有试过这种写法吗?
我也是用的TS,这种写法在我这边没有问题 |
多谢,刚看到这些回复。 |
同样遇到这样的问题 |
使用webpack打包,配置babel-loader,babelrc配置如下
打包后的文件中使用bscroll的地方提示:
Uncaught (in promise) TypeError: BScroll is not a constructor
。调试跟踪到代码
处发现
_betterScroll
没有__esModule
属性,所以BScroll
实际上变成了{default:BScroll}
。导致下面无法实际化因为其它引用库的原因,我是没有办法使用
module:false
的babel配置的。我尝试了各种办法,但在不修改源码的基础上始终没有一个圆满的结果。
这是在我用
的情况。而如果我换成
写法的话,typescript会转换为amd格式的js代码
引用的话,
webpack
打包是没有问题,但问题在于我开发的时候用的是amd
方式加载的bscroll
,在这种情况下使用就有问题了。所以我做了一点修改,如果 @ustbhuangyi 认为有更好的办法,请指点。
The text was updated successfully, but these errors were encountered: