Moment: 模块导入在最新版本的Chrome中不起作用

创建于 2017-10-05  ·  7评论  ·  资料来源: moment/moment

问题说明和复制步骤:

最新版本的Chrome宣布本机模块导入支持。 但是此功能需要提供完整的模块文件名(包括“ .js”扩展名)。
在库代码中,“ import ...”条目不具有“ .js”扩展名,这会在浏览器中导致404错误。

仅供参考:可能(在某些平台上确实)隐藏此问题的一件事是Web服务器配置。
OSX上的Apache Web服务器似乎默认启用了“ MultiViews”设置(如果未找到“ moment”文件,则服务器将找到“ moment.js”文件),但是在Ubuntu上,例如,此Web服务器选项已禁用,这将导致模块加载失败。

环境:

Ubuntu 16.04上的Chrome 61.0.3163.100(64位)

console.log( (new Date()).toString())
console.log((new Date()).toLocaleString())
console.log( (new Date()).getTimezoneOffset())
console.log( navigator.userAgent)
VM3015:1 Thu Oct 05 2017 19:30:43 GMT+0600 (+06)
VM3015:2 05.10.2017, 19:30:43
VM3015:3 -360
VM3015:4 Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36

moment.js版本是2.18.1

Help Wanted Loading

最有用的评论

这不只是一件镀铬的东西。 据我所知,ES6模块规范要求FromClause中有一个文件名,而不仅仅是一个字符串。 Rollup和Webpack在没有文件扩展名的情况下都可以正常工作,但这只是使捆绑更加容易。

总的来说,最好避免让任何加载程序猜测扩展名,是的,FromClauses应该确实是完整的文件名。

所有7条评论

这不只是一件镀铬的东西。 据我所知,ES6模块规范要求FromClause中有一个文件名,而不仅仅是一个字符串。 Rollup和Webpack在没有文件扩展名的情况下都可以正常工作,但这只是使捆绑更加容易。

总的来说,最好避免让任何加载程序猜测扩展名,是的,FromClauses应该确实是完整的文件名。

如果在支持该功能的浏览器中使用模块导入时,将源版本和编译版本都无效,将其分类将非常好。

只是将文件扩展名添加到导入中,这应该是一个快速修复。
同样对于希望使用编译版本的人-为了在全球范围内使用Moment,由于thisundefined ,因此global属性需要回退到window undefined

最好通过社区驱动的PR来解决!

你去

这对于在Polymer WebComponent中使用非常有用。 现在,由于这个原因,我无法在标准ES6 Web组件中成功使用moment js。

这还是个问题吗? 我担心添加文件扩展名会导致Moment.js对于其他用户子集破坏...

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

benhathaway picture benhathaway  ·  3评论

IbraheemAlSaady picture IbraheemAlSaady  ·  3评论

nikocraft picture nikocraft  ·  3评论

dogukankotan picture dogukankotan  ·  3评论

vbullinger picture vbullinger  ·  3评论