当前位置: 首页 > 知识库问答 >
问题:

javascript - html中 引入js模块后提示找不到export的对象?

景哲
2023-08-30
//a.jslet Bank={    name:"ll"    }export default Bank;
//index.html<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <title>Document</title></head><body>    <div>abc</div>        <script type="module" src="a.js">        //忽略以下代码        console.log(Bank)        alert("abc")    </script>    <script>        //正常执行        alert("cd")        //报错,提示找不到Bank        console.log(Bank)    </script></body></html>

代码比较简单。index.html 中 有两个script,第一个script是 模块化引入a.js
第二个script是输出Bank变量。

问题:
(1)第一段script ,script标签中的代码不会执行难,也就是不会alert abc .为什么?

(2)第二段script ,console.log(Bank)提示找不到bank, Bank不是引入了么?

共有2个答案

凌俊材
2023-08-30

方案一:使用异步加载
可以使用 defer 属性来确保在脚本加载完毕后执行:

<script type="module" src="a.js" defer></script><script>    // 这里已经确保 a.js 加载完毕,Bank 可见    console.log(Bank);</script>

方案二:使用事件监听
在模块加载完成后,手动触发一个事件,在事件回调函数中访问 Bank 变量:

<script type="module">    import Bank from './a.js';    window.addEventListener('moduleLoaded', () => {        // 这里 a.js 加载完毕,Bank 可见        console.log(Bank);    });</script><script type="module" src="a.js" defer onload="dispatchEvent(new Event('moduleLoaded'))"></script>
万俟穆冉
2023-08-30

在非模块脚本中访问模块作用域中的变量,你可以通过将模块中的变量显式导出,并在非模块脚本中使用 import 来引入。这样,你就可以在非模块脚本中访问模块作用域中的变量:

<script type="module" src="a.js"></script><script>    // 引入模块中的变量    import Bank from './a.js';    alert("cd");        console.log(Bank);</script>
 类似资料:
  • 问题内容: 我已经很长时间没有使用Node.js了,也从未使用过express。当我启动应用程序时,它刚刚返回: 启动test.html时发生错误。这是代码: 我自己的路 : 为什么呢 编辑: 这是我的新app.configure: 但它返回: 问题答案: 我假设test.html是一个静态文件。要渲染静态文件,请像这样使用静态中间件。 这告诉express在应用程序的公共目录中查找静态文件。 指

  • 左侧的 import App from './App.vue' 有红色波浪号 vscode 提示所 Could not find a declaration file for module './App.vue'. '/home/pon/Desktop/code/me/noface/src/App.vue.js' implicitly has an 'any' type.ts(7016) 为什么?

  • 本文向大家介绍Python升级提示Tkinter模块找不到的解决方法,包括了Python升级提示Tkinter模块找不到的解决方法的使用技巧和注意事项,需要的朋友参考一下 一、安装tkinter 在Linux中python默认是不安装Tkinter模块, 我们安装Tkinter模块 二、升级Python Linux的Python版本默认都不叫低 查看Python版本 DOWN新版本 解压安装 看看

  • 问题内容: 我最近在计算机上安装了cx_Oracle模块,以连接到远程Oracle数据库服务器。(我身边没有Oracle客户端)。 Python:2.7 x86版 Oracle:版本11.1.X x64 Cx_Oracle:版本5.1.2-11g.win32-py2.7 然后,每次我运行脚本时,脚本都会失败并显示以下消息: ImportError:DLL加载失败:找不到指定的模块。 我想知道是否我

  • 问题内容: 我有以下目录结构: 我尝试在从server.js导出的app.js中调用函数,我这样做: 但是得到错误: 我如何正确包含它? 谢谢。 问题答案: 该路径必须相对于您当前所在的文件。 用

  • 问题内容: 我收到错误,无法在Node.js应用程序中找到模块“ bcrypt” 我尝试使用 npm install bcrypt 安装它, 但仍然出现问题。 错误信息: 问题答案: 使用命令无法为我解决问题。 我尝试了以下命令,但问题解决了。