TypeScript 中 ReferenceError: exports is not defined 错误
要解决“Uncaught ReferenceError: exports is not defined”,添加一个定义导出变量的脚本标签,例如 <script>var exports = {};</script>
如果在浏览器中,则在我们的 JS 脚本标记之上,或者如果在 Node.js 的 package.json 文件中设置为模块,则删除类型属性。
浏览器 - ReferenceError: exports is not defined
如果在浏览器中运行的代码出现错误,请尝试在加载 JS 文件的脚本标签上方定义一个全局导出变量。
<script>var exports = {};</script>
<!-- 👇️ your JS script should be below -->
<script src="index.js"></script>
这定义了 exports 变量并将其设置为一个空对象,因此如果访问它的属性,我们不会收到错误。
浏览器不支持 require 和 module.exports
的 CommonJS 语法(除非你使用 webpack 之类的工具),这会导致错误。
如果我们在浏览器中运行代码,请尝试从 tsconfig.json 文件中删除模块属性并将目标设置为 es6。
{
"compilerOptions": {
"target": "es6", // 👈️ set this to es6
// "module": "commonjs", // 👈️ REMOVE this (if browser env)
}
}
当我们删除模块选项并将目标设置为 es6 时,我们的 ES6 模块导入和导出将不会被编译为浏览器不支持的旧 CommonJS 语法。
现代浏览器支持所有 ES6 特性,因此 ES6 是一个不错的选择。
如果这不起作用,请尝试在脚本标签中将类型属性设置为模块。
<!-- 👇️ correct path according to your setup -->
<script type="module" src="index.js"></script>
并使用 ES6 模块语法导入和导出。
import {v4} from 'uuid'
export function sum(a, b) {
return a + b;
}
当我们在 tsconfig.json 中将模块设置为
commonjs
时,指示 TypeScript 发出CommonJS
文件,而浏览器不支持CommonJS
语法,因此这很可能是导致错误的原因。
Node.js - ReferenceError: exports is not defined
如果我们在 Node.js 应用程序中遇到错误,请尝试从 package.json 文件中删除类型属性(如果它设置为模块)。
{
"type": "module", // 👈️ remove this
}
当 type
设置为 module 时,我们无法使用 CommonJS 的 exports
和 require
语法,我们必须坚持对所有导入和导出使用 ES Modules 语法,这可能会导致错误。
当我们在 package.json 文件中将类型设置为 module,但在 tsconfig.json 文件中将模块设置为 commonjs 时,就会发生这种情况。
这两个选项不兼容,因为
type = module
指示 Node.js 使用 ES 模块语法,而module = commonjs
指示 TypeScript 发出 CommonJS 文件。
打开我们的 tsconfig.json 文件并确保它类似于以下内容。
{
"compilerOptions": {
"target": "es6",
"module": "commonjs",
"esModuleInterop": true,
"moduleResolution": "node",
// ... your other options
}
}
你的目标选项应该至少是 es6 并且模块应该设置为 CommonJS。
确保使用 ES6 模块语法进行导入和导出。
import {myFunction} from './myFile'
export function sum(a:number, b:number) {
return a + b;
}
Node JS 支持 CommonJS 语法,因此当我们使用 ES module
语法并通过将模块设置为 commonjs
来指示 TypeScript 发出 CommonJS 代码时,上面示例中的导出将被编译为 CommonJS 并且应该可以工作。
它不起作用的唯一原因是——你发出了 CommonJS 文件,但已指示 Node.js 使用 ES6 模块语法来读取它们。
相关文章
在 AngularJs 中设置 Select From Typescript 的默认选项值
发布时间:2023/04/14 浏览次数:78 分类:Angular
-
本教程提供了在 AngularJs 中从 TypeScript 中设置 HTML 标记选择的默认选项的解释性解决方案。
在 Angular 中使用 TypeScript 的 getElementById 替换
发布时间:2023/04/14 浏览次数:153 分类:Angular
-
本教程指南提供了有关使用 TypeScript 在 Angular 中替换 document.getElementById 的简要说明。这也提供了在 Angular 中 getElementById 的最佳方法。
在 TypeScript 中使用 try..catch..finally 处理异常
发布时间:2023/03/19 浏览次数:181 分类:TypeScript
-
本文详细介绍了如何在 TypeScript 中使用 try..catch..finally 进行异常处理,并附有示例。
在 TypeScript 中使用 declare 关键字
发布时间:2023/03/19 浏览次数:97 分类:TypeScript
-
本教程指南通过特定的实现和编码示例深入了解了 TypeScript 中 declare 关键字的用途。
在 TypeScript 中 get 和 set
发布时间:2023/03/19 浏览次数:172 分类:TypeScript
-
本篇文章演示了类的 get 和 set 属性以及如何在 TypeScript 中实现它。
在 TypeScript 中格式化日期和时间
发布时间:2023/03/19 浏览次数:161 分类:TypeScript
-
本教程介绍内置对象 Date() 并讨论在 Typescript 中获取、设置和格式化日期和时间的各种方法。
在 TypeScript 中返回一个 Promise
发布时间:2023/03/19 浏览次数:182 分类:TypeScript
-
本教程讨论如何在 TypeScript 中返回正确的 Promise。这将提供 TypeScript 中 Returns Promise 的完整编码示例,并完整演示每个步骤。
在 TypeScript 中定义函数回调的类型
发布时间:2023/03/19 浏览次数:221 分类:TypeScript
-
本教程说明了在 TypeScript 中为函数回调定义类型的解决方案。为了程序员的方便和方便,实施了不同的编码实践指南。
在 TypeScript 中把 JSON 对象转换为一个类
发布时间:2023/03/19 浏览次数:110 分类:TypeScript
-
本教程演示了如何将 JSON 对象转换为 TypeScript 中的类。