javascript import 报错

初学者, 想知道错误出在哪里,找到的资料都介绍的
以下是我精简后的代码内容,错误提示在 main.js import那一行
错误提示为:
SyntaxError: Unexpected token '{'. import call expects exactly one argument

index.html

<!DOCTYPE html>
<html>

<head>
    <title>LearnJavscript</title>
    <meta charset="utf-8">
    <style type = "text/css">
        body{
            background: #FFFFFF;
            padding: 0px;
            margin: 0px;
            display: flex;
            /* flex-direction: column-reverse; */
            justify-content: center;
        }
 
    </style>
</head>

<body>
    <script src="main.js"></script>
</body>

</html>

main.js

import {hello} from './lib.js';

hello();

lib.js

export function hello() {
    console.log('hello');
}
阅读 14.1k
4 个回答

浏览器啥时候可以直接用 import了?
浏览器JS不支持模块系统,如果需要,需要用requirejs或者seajs或者webpack处理

<script src="main.js"></script>

=>

<script type="module" src="main.js"></script>

目前支持 ES6 Module 的浏览器:

  • Safari 10.1
  • Chrome 61
  • Firefox 54 需要设置 dom.moduleScripts.enabled
  • Edge 16

在浏览器里使用 Module 的方法:

<script type="module" src="./main.js"></script>
// 或
<script type="module">
  import './main.js';
</script>

需要注意的规范:

  1. 注意引用的路径,不支持 main.js,支持 /main.js、./main.js、../main.js、**/main.js
  2. 使用 nomodule 属性向后兼容
  3. Modules 默认使用 Defer,即慢于同步的请求,但先于显式 Defer 的请求
  4. 引用或内联的 Modules 都支持 Async
  5. 多次引用同一个Modules,只执行一次
  6. 通常需要 CORS,即需要 Access-Control-Allow-Origin: *
  7. 发送请求默认不包括证书
  8. Modules 需要设置可用的 MIME 类型,否则不会执行

参考:
https://jakearchibald.com/201...

不支持import语法,可以使用babel转成es5

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