这是一个简单的问题。我尝试将模块从一个javascript文件导入到另一个javascript文件,然后在Chrome上运行它。我使用了两个javascript文件和一个html文件,都在同一个文件夹中:
第一个js文件(testfile1.js):
import {test} from 'testfile2.js';
test.func();
第二个js文件(testfile2.js):
let f = function() {
console.log("TEST");
}
let test = {
func: f
};
export test;
html文件是一个普通的空html文件,头部有一个到testfile1.js脚本的链接:
<script type="text/javascript" src="testfile1.js"></script>
每当我在chrome中打开html文件时,我都会得到错误:
testfile1.js:1 Uncaught SyntaxError: Unexpected token {
当我删除import语句中的方括号时,我得到了一个意外的标识符语句。这不是在浏览器中导入模块的正确方法吗?为什么一点用都没有?
1条答案
按热度按时间mctunoxg1#
模块需要
type="module"
而不是"text/javascript"
根据Jaromanda X的评论,您需要将
<script>
标记的type
属性的值更改为"module"
,因为import { test } from 'testfile2.js'
是模块代码。动态
import()
怎么样如果你真的不想使用
type="module"
,任何JavaScript文件都可以使用动态import()
语法,即使没有type="module"
。但是,动态导入有一个警告;函数
import()
返回一个promise,因此,您无法同步使用它。您必须await
或.then
动态导入才能使用它解析的值。