"不明确的间接导出"错误 JavaScript/TypeScript



我收到这个错误:Syntax Error: ambiguous indirect export在Firefox中。遗憾的是,在谷歌上找不到任何东西。。。

  • 这是我的导入:
<script type="module">
import {someFunctionINeed} from "./js/functions.js";
...
</script>
  • 这是我的导出:
export function someFunctionINeed(cname) { ... }
  • 我的tsconfig.json中的compilerOptions:
"compilerOptions": {
"module": "commonjs",
"target": "es5",
"sourceMap": true,
"watch": true,
"removeComments": true
}
  • 以及可能与package.json相关的内容:
"type": "module"

我错过了什么?


好的,我找到了解决方案:在tsconfig.json:中设置这些属性很重要

"module": "ESNext",
"target": "esnext",

否则它就不会"编译";我需要它来支持函数的导入/导出。

我遇到了同样的问题,通过在package.json文件中包含"type": "module"来修复它。

(我知道这不是你问题的答案,但有人可能会觉得它很有用,因为谷歌上没有太多关于这个错误的信息(

我也有同样的错误,但原因不同。对我来说,问题是package.json中的name与我导入的文件名相同。

解决方案:更改文件名和导入路径

使用Vite 4.9.3、TypeScript 4.9.3和Firefox 109进行观察。

这似乎是一个热门话题,因为我最近几次遇到这个错误,我想我也应该给出我的解决方案(显然,有很多不同的原因导致了令人震惊的间接导出错误,IMHO大多数时候这与导入文件中的语法错误有关。我必须承认,我不能100%确定require和import的差异及其实际范围(显然,import更多地用于服务器端/模块上下文,而require似乎与"经典"js文件有关,但这并不总是正确的,我认为这将是一个谜,直到一些超级程序员弄清楚它,并最终为Web汇编环境编写transpiler

在我的例子中,我试图将.jsx中的{x,y,z}包含在.js文件中,这就是错误所说的令人震惊的地方。我将module.exports={}更改为导出默认值{},但错误仍然存在。事实证明,在这个.js文件中,我需要("./yet/other/jsx/file"(,但没有定义require。该错误是在我删除默认关键字后打印的,因此总结如下:

  • 从具有单个";导出默认值">
  • 导出js文件中的~不带默认值~对象以及
  • 从jsx文件中的.js文件导入

为我解决了这个问题。尝试删除默认语句并坚持导入(至少在前端,我正在使用vite构建一个preast应用程序(似乎可以节省一些调试时间。我希望如此。祝各位程序员好运,愿Web汇编器问世,让javascript能够安息<3

从ChatGPT:添加

"导入";以及";要求";用于JavaScript中的模块加载"导入";在ES6+中用于前端和后端;要求";在CommonJS中用于后端。为了避免不明确的错误,请使用一致的导入/导出语法,避免循环依赖关系,并始终指定文件扩展名。

抱歉收到垃圾邮件。我相信是时候最终伪造这个bs了。

如果您输入的标识符错误,也可能发生这种情况,例如:

// In the export file:
export function someFunctionINeed(cname) { ... }
// In the import file:
// This identifier is the wrong case, the "S" should be lowercase
import { SomeFunctionINeed } from "./js/functions.js";

我也面临同样的问题,显然我忘记在导出的末尾添加逗号

最新更新