导入 javascript 模块

问题描述 投票:0回答:3

我编写了一个名为 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 行有语法错误,但我看不出它有什么问题。任何见解都非常感激。

javascript es6-modules
3个回答
3
投票

由于您仅导入单个函数,因此应从导入中删除

{}
。另外,您应该将“路径语法”更改为“路径语法”。 你应该得到这样的结果:

import myModule from "./module";

1
投票

使用

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);
});

指定路径

./
将在您导入的文件的当前目录中搜索。

../
将搜索您要导入的文件的上一级目录

../../
将搜索您要导入的文件向上两级的目录


0
投票

这是关于在浏览器 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 可能需要或可能有一个条目。

© www.soinside.com 2019 - 2024. All rights reserved.