首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ES模块导入不工作

ES模块导入不工作
EN

Stack Overflow用户
提问于 2018-07-17 17:31:25
回答 2查看 4.2K关注 0票数 4

我试图做一个简单的例子香草ES进口出口。

index.js

代码语言:javascript
复制
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8" />
  <script type="module" src="main.js"></script>
</head>
<body>

</body>
</html>

main.js

代码语言:javascript
复制
import {foo} from './mathModule';

console.log(foo);

mathModule.js

代码语言:javascript
复制
export const foo = Math.sqrt(2);

当我运行这个页面时,会发现一个错误。

代码语言:javascript
复制
main.js:1 GET http://[page].net/test/mathModule 404 (Not Found)

编辑:项目结构

  • 测试
    • index.html
    • main.js
    • mathModule.js

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-17 17:39:58

import需要一个完全限定的URL。除非绝对URL没有扩展名,否则不能关闭扩展名。

所以根据你的例子来判断:

代码语言:javascript
复制
import {foo} from './mathModule.js';

正如尼梅什卡·斯里马尔所捕捉到的那样,扩展需求似乎因实现而异。火狐是自动追加.js,但Chrome和Safari期待的实际地址。

我正在查看规范,15.2.2进口,并且似乎没有任何规范来说明实现者是否应该自动地追加扩展。

此外,正如ASDFGerteimport中指出的那样

要从其中导入的模块。这通常是包含模块的.js文件的相对路径名或绝对路径名。某些绑定器可能允许或要求使用扩展;检查您的环境。只允许单引号和双引号字符串。

票数 7
EN

Stack Overflow用户

发布于 2018-07-17 17:55:21

最简单的方法是删除exportimport表达式,因为您已经在html中包含了这两个文件。

代码语言:javascript
复制
const foo = Math.sqrt(2) // mathModule.js
console.log(foo) // main.js
代码语言:javascript
复制
<!doctype html>
<html>
<head>
  <meta charset="utf-8" />
  <script src="mathmodule.js"></script>
  <script src="main.js"></script>
</head>
<body>

</body>
</html>

如果您正在使用节点或类似的东西来运行脚本,也许您应该使用像babel这样的转发程序。ImportExport是“新的”javascript特性,因此它们不是在大多数浏览器中实现的

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

https://stackoverflow.com/questions/51387238

复制
相关文章

相似问题

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