ReferenceError: require 未在 JavaScript 中定义

目录

ReferenceError: require is not defined in JavaScript

  1. ReferenceError require 未在浏览器中定义
  2. ReferenceError require 未在 Node.js 中定义

ReferenceError: require 未在 JavaScript 中定义

出现“ReferenceError: require is not defined”的原因有多种:

  1. require()在浏览器环境中使用该功能。
  2. 使用require()Node.js 中的函数,在文件type中设置为modulepackage.json
  3. 使用require()Node.js 中的函数,其中文件具有.mjs
    扩展名。

referenceerror require 未定义

ReferenceError: require is not defined in ES module scope, you can use import instead

本文介绍如何解决浏览器或服务器上的错误。

  1. ReferenceError require 未在浏览器中定义
  2. ReferenceError require 未在服务器上定义

ReferenceError require 未在浏览器中定义

要解决“ReferenceError require is not defined”错误,请使用 ES6 模块导入和导出语法。require()函数是 Node.js 特定的,在浏览器中不受支持。

您可以在浏览器中使用
ES6 模块导入/导出
语法。
这是一个例子:

索引.html
<!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文件导出一个函数和一个变量。

索引.js
// 👇️ named export export function sum(a, b) { return a + b; } // 👇️ named export export const num = 100;

其他文件可以导入和使用它们。

另一个文件.js
// 👇️ named imports import {sum, num} from './index.js'; console.log(sum(5, 5)); // 👉️ 10 console.log(num); // 👉️ 100

这些示例使用命名导出和导入,但您也可以使用默认导出。

这是我们index.js文件的更新版本。

索引.js
// 👇️ default export export default function sum(a, b) { return a + b; } // 👇️ named export export const num = 100;

这就是我们导入函数和变量的方式another-file.js

另一个文件.js
// 👇️ default and name import import sum, {num} from './index.js'; console.log(sum(5, 5)); // 👉️ 10 console.log(num); // 👉️ 100
您应该在浏览器中使用此 ES6 模块语法,而不是函数。 require()

注意:

  • 每个文件只能有 1 个默认导出。但是,您可以根据需要拥有尽可能多的命名导出。

  • 您还必须在导入文件时指定扩展名。

或者,您可以将index.js文件的脚本放在 的脚本之上another-file.js,这样函数和变量 fromindex.js就可以在another-file.js不导出和导入它们的情况下使用。

这是一个没有导入或导出的示例。

索引.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文件只定义了一个函数和一个变量。

索引.js
function sum(a, b) { return a + b; } const num = 100;

现在我们可以在我们的其他文件中使用函数和变量而无需导入它们。

另一个文件.js
console.log(sum(5, 5)); // 👉️ 10 console.log(num); // 👉️ 100

ReferenceError require 未在 Node.js 中定义

如果该require()函数未在服务器上定义,则您已在您的文件中将属性设置为
或者
type的文件的扩展名为.modulepackage.json.mjs.js

节点 js require 未在 es 模块范围内定义,您可以改用 import

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.

有两种方法可以解决错误:

  1. 在 Node.js 文件中使用 ES6 导入/导出语法。
  2. 从您的文件中删除type属性。package.json

要解决“ReferenceError require is not defined”错误,请删除该type
属性(如果它
module在您的package.json文件中设置为)并将任何具有.mjs扩展名的文件重命名为具有.js扩展名。

包.json
{ // 👇️ this should be removed if you want to use require "type": "module", // ... 👇️ rest }

或者,您可以使用

带有 import 和 export 关键字的
ES6 模块语法。

如果要使用import/export语法导入和导出模块,请在 package.json 文件中将type属性设置为。module

包.json
{ // 👇️ add this "type": "module", // ... 👇️ rest }

您必须将requireandmodule.exports语法替换为
importandexport关键字。

这是我们定义一个函数和一个变量并将它们导出的示例。

索引.js
// 👇️ named export export function sum(a, b) { return a + b; } // 👇️ named export export const num = 100;

现在我们可以导入它们并在其他文件中使用它们。

另一个文件.js
// 👇️ default and named import import {sum, num} from './index.js'; console.log(sum(5, 5)); // 👉️ 10 console.log(num); // 👉️ 100

代码示例仅使用命名导出,但是,您也可以使用default
导出和导入。

这是我们index.js文件的更新版本。

索引.js
// 👇️ default export export default function sum(a, b) { return a + b; } // 👇️ named export export const num = 100;

下面是我们如何将函数和变量导入到
another-file.js.

索引.js
// 👇️ default and named exports import sum, {num} from './index.js'; console.log(sum(5, 5)); // 👉️ 10 console.log(num); // 👉️ 100

注意:

  • 每个文件只能有 1 个默认导出。但是,您可以根据需要拥有尽可能多的命名导出。

  • 您还必须在导入文件时指定扩展名。

  • 您不能在require()函数和 ES6 模块导入/导出语法之间进行混合和匹配。您必须始终如一地使用其中之一。