我编写了一个名为 module.js 的 Javascript 模块,它执行以下操作
export default function myModule() {
return new Promise((resolve) => {
// do a bunch of stuff
});
};
我有以下 Javascript 代码 test.js,它在 module.js 中使用 myModule()
import {myModule} from "module";
myModule().then((retVal) => {
console.log(retVal);
});
不幸的是,我的浏览器控制台告诉我有以下语法错误:
Uncaught SyntaxError: Unexpected identifier
控制台显示 test.js 第 1 行有语法错误,但我看不出它有什么问题。任何见解都非常感激。
由于您仅导入单个函数,因此应从导入中删除
{}
。另外,您应该将“路径语法”更改为“路径语法”。
你应该得到这样的结果:
import myModule from "./module";
使用
default
导出时,不使用大括号 `。试试这个:
import myModule from "module"
请参阅此处:ES6 导入时应何时使用大括号?
如上所述,如果您从项目中的文件而不是节点模块导入它,那么您将指定要从中导出的文件的路径。我已经在我的项目中测试了以下代码,并在控制台中收到了预期的结果
test resolve
。如果这仍然不适合您,请告诉我。
module.js
export default function myModule() {
return new Promise((resolve) => {
// do a bunch of stuff
resolve('test resolve');
});
};
index.js
import myModule from "./module"; // Notice there are no braces (as we are exporting default) and that we are specifying the path
myModule().then((retVal) => {
console.log(retVal);
});
指定路径
./
将在您导入的文件的当前目录中搜索。
../
将搜索您要导入的文件的上一级目录
../../
将搜索您要导入的文件向上两级的目录
这是关于在浏览器 JavaScript 中导入 JavaScript 模块。
如果 test.js 与您的文件位于同一目录中,则使用
./module
;否则,您可能有 ../module
或 ../src/module
或从 module.js
的当前目录到 test.js
的其他路径。必须是comolete 路径,首选 ./
和 ../
链接。如果您有一个测试目录,则假设您的 test.js 位于 tests/test.js
中,如果它位于根目录中,则您正在导入 ../module.js
,或者如果它位于 ../src/module.js
中,则导入 src/module.js
。
假设
test.js
与 index.html
和 module.js
在同一目录中,在 test.js
中你可以使用:
import myModule from "./module";
在 HTML 中这样,
index.html
你应该有:
<HTML>
<HEADER>
<script src='./test.js'>
// inside the script you would need to fix your import paths.
</script>
</HEADER>
<body>
</body>
</HTML>
这里的关键字是浏览器,问题询问浏览器中的
Uncaught SyntaxError: Unexpected identifier
,意味着导入是意外的。
Node.JS 与 Gatsby.JS、Next.JS 或 Vue.JS 可能会按您的方式工作,如果您的模块安装到 node_modules 中,package.json 可能需要或可能有一个条目。