目录
ReferenceError: require is not defined in JavaScript
ReferenceError: require 未在 JavaScript 中定义
出现“ReferenceError: require is not defined”的原因有多种:
require()
在浏览器环境中使用该功能。- 使用
require()
Node.js 中的函数,在文件type
中设置为。module
package.json
- 使用
require()
Node.js 中的函数,其中文件具有.mjs
扩展名。
ReferenceError: require is not defined in ES module scope, you can use import instead
本文介绍如何解决浏览器或服务器上的错误。
ReferenceError require 未在浏览器中定义
要解决“ReferenceError require is not defined”错误,请使用 ES6 模块导入和导出语法。该require()
函数是 Node.js 特定的,在浏览器中不受支持。
您可以在浏览器中使用
ES6 模块导入/导出
语法。这是一个例子:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> </head> <body> <!-- your HTML here --> <!-- 👇️ include scripts setting type="module" --> <script type="module" src="index.js"></script> <script type="module" src="another-file.js"></script> </body> </html>
index.js
现在我们another-file.js
可以使用 ES6 导入/导出语法。
我们的index.js
文件导出一个函数和一个变量。
// 👇️ named export export function sum(a, b) { return a + b; } // 👇️ named export export const num = 100;
其他文件可以导入和使用它们。
// 👇️ named imports import {sum, num} from './index.js'; console.log(sum(5, 5)); // 👉️ 10 console.log(num); // 👉️ 100
这些示例使用命名导出和导入,但您也可以使用默认导出。
这是我们index.js
文件的更新版本。
// 👇️ default export export default function sum(a, b) { return a + b; } // 👇️ named export export const num = 100;
这就是我们导入函数和变量的方式another-file.js
。
// 👇️ default and name import import sum, {num} from './index.js'; console.log(sum(5, 5)); // 👉️ 10 console.log(num); // 👉️ 100
require()
注意:
-
每个文件只能有 1 个默认导出。但是,您可以根据需要拥有尽可能多的命名导出。
-
您还必须在导入文件时指定扩展名。
或者,您可以将index.js
文件的脚本放在 的脚本之上another-file.js
,这样函数和变量 fromindex.js
就可以在another-file.js
不导出和导入它们的情况下使用。
这是一个没有导入或导出的示例。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> </head> <body> <!-- 👇️ index.js is loaded first, so we can use the functions in another-file --> <script src="index.js"></script> <script src="another-file.js"></script> </body> </html>
该index.js
文件只定义了一个函数和一个变量。
function sum(a, b) { return a + b; } const num = 100;
现在我们可以在我们的其他文件中使用函数和变量而无需导入它们。
console.log(sum(5, 5)); // 👉️ 10 console.log(num); // 👉️ 100
ReferenceError require 未在 Node.js 中定义
如果该require()
函数未在服务器上定义,则您已在您的文件中将属性设置为
,或者type
您的文件的扩展名为.module
package.json
.mjs
.js
ReferenceError: require is not defined in ES module scope, you can use import instead This file is being treated as an ES module because it has a '.js' file extension and '/home/borislav/Desktop/bobbyhadz-rest/bobbyhadz-js/package.json' contains "type": "module". To treat it as a CommonJS script, rename it to use the '.cjs' file extension.
有两种方法可以解决错误:
- 在 Node.js 文件中使用 ES6 导入/导出语法。
- 从您的文件中删除
type
属性。package.json
要解决“ReferenceError require is not defined”错误,请删除该type
属性(如果它module
在您的package.json
文件中设置为)并将任何具有.mjs
扩展名的文件重命名为具有.js
扩展名。
{ // 👇️ this should be removed if you want to use require "type": "module", // ... 👇️ rest }
或者,您可以使用
带有 import 和 export 关键字的ES6 模块语法。
如果要使用import/export
语法导入和导出模块,请在 package.json 文件中将type
属性设置为。module
{ // 👇️ add this "type": "module", // ... 👇️ rest }
您必须将require
andmodule.exports
语法替换为
import
andexport
关键字。
这是我们定义一个函数和一个变量并将它们导出的示例。
// 👇️ named export export function sum(a, b) { return a + b; } // 👇️ named export export const num = 100;
现在我们可以导入它们并在其他文件中使用它们。
// 👇️ default and named import import {sum, num} from './index.js'; console.log(sum(5, 5)); // 👉️ 10 console.log(num); // 👉️ 100
代码示例仅使用命名导出,但是,您也可以使用default
导出和导入。
这是我们index.js
文件的更新版本。
// 👇️ default export export default function sum(a, b) { return a + b; } // 👇️ named export export const num = 100;
下面是我们如何将函数和变量导入到
another-file.js
.
// 👇️ default and named exports import sum, {num} from './index.js'; console.log(sum(5, 5)); // 👉️ 10 console.log(num); // 👉️ 100
注意:
-
每个文件只能有 1 个默认导出。但是,您可以根据需要拥有尽可能多的命名导出。
-
您还必须在导入文件时指定扩展名。
-
您不能在
require()
函数和 ES6 模块导入/导出语法之间进行混合和匹配。您必须始终如一地使用其中之一。