首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ES6导入导出是否需要.js扩展?

ES6导入导出是否需要.js扩展?
EN

Stack Overflow用户
提问于 2017-06-11 16:32:15
回答 3查看 12.4K关注 0票数 32

我安装了chrome beta -版本60.0.3112.24 (官方版本) beta (64位)

在chrome://标志/i中启用了“实验网络平台功能”(参见https://jakearchibald.com/2017/es-modules-in-browsers)

然后我试着:

代码语言:javascript
复制
<script type="module" src='bla/src/index.js'></script>

其中index.js有一行代码,如:

代码语言:javascript
复制
export { default as drawImage } from './drawImage';

这引用了现有文件drawImage.js

我在控制台中看到的是

代码语言:javascript
复制
GET http://localhost/bla/src/drawImage 

如果我更改导出并添加".js“扩展名,它就能正常工作。

这是一个chrome错误,还是ES6在这种情况下要求扩展?

同样,在没有扩展的情况下,webpack也能很好地构建它!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-06-13 07:46:45

不,模块不关心扩展。它只需要是一个解析为源文件的名称。

在您的例子中,http://localhost/bla/src/drawImage不是一个文件,而http://localhost/bla/src/drawImage.js是一个文件,所以这就是错误的来源。例如,您可以在所有导入语句中添加.js,或者将服务器配置为忽略该扩展。Webpack也是这样做的。浏览器不会这样做,因为它不允许任意重写urls。

票数 10
EN

Stack Overflow用户

发布于 2017-06-11 16:35:22

扩展名是文件名的一部分。你必须把它放进去。

作为证明,试着这样做:

为了包含'./drawImage.test'

  • 将文件重命名为drawImage.test
  • edit index.js

重新加载,您将看到扩展jstest是完全任意的,只要您在export中指定它。

显然,在测试之后,恢复到正确的/更好的js扩展。

票数 14
EN

Stack Overflow用户

发布于 2021-01-19 19:42:47

ES6导入导出需要“.js”扩展。node文档中有明确的说明:

启动相对说明符,如‘./

  • .js’或'../config.mjs‘。它们指的是相对于导入文件位置的路径。对于这些操作,文件扩展名始终是必需的。

  • 此行为与浏览器环境中导入的行为方式相匹配,前提是通常配置了服务器。

https://nodejs.org/api/esm.html#esm_import_expressions

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44481851

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档