抱歉,但是我做错了什么基本的蠢事?我关注this example code.我是否需要一种特殊的代码服务方式? (我使用的是http-server)
Chrome抱怨
最小代码如下:
mini.js
import {doSomething2} from "mini2";
// import doSomething2 from "mini2"; also fails
// also tried ... from "./mini2"
function doSomething1(url, opts) {
return "mini1 " + doSomething2(url);
}
mini2.js
export function doSomething2(url, opts) {
return ("mini2 " + url);
}
mini.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset=utf-8>
<title>Test</title>
<script src="mini.js"></script>
</head>
<body onload="console.log(doSomething1('hi there'))">
<header>
</header>
<main>
<h1> Test </h1>
</main>
</body>
</html>
更新:我没有使用任何转发器或捆绑器。在@MohammedWaleed建议之后,如果.html文件使用type = "module"
并且mini.js导入带有详细路径import {doSomething2} from './mini2.js';
的mini2.js,那么事情或多或少都有效。我可以从mini.js运行内联代码,该代码调用mini2.js。问题是mini.js中的函数,例如dosomething1()
,似乎是看不见的。
更新2 @loganfsmyth评论有效。看起来如果您的脚本类型为&#34; module&#34;,您必须手动设置全局变量。有点尴尬,但很好。为了避免过多地污染窗口全局空间,可能最好使用窗口属性,这里我只使用&#34; mini&#34;:
window.mini = {
doSomething1 :function doSomething1(url) {
return "mini " + doSomething2(url);
}
anotherFunction: blah blah...
}
答案 0 :(得分:1)
你试过吗
import {doSomething2} from "mini2.js";
因为我注意到它包含在以下链接的文件中,无论哪种方式你应该检查链接它会帮助你
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import
编辑: 我发现这篇文章介绍它会帮助你
https://medium.com/dev-channel/es6-modules-in-chrome-canary-m60-ba588dfb8ab7