【问题标题】:Uncaught ReferenceError: require is not defined?未捕获的 ReferenceError:未定义要求?
【发布时间】:2020-05-16 23:02:51
【问题描述】:

我已经下载了 node-js,并且我在一个文件夹中使用了 npm。我已经下载了 lodash 包作为依赖项,它位于 node modules 文件夹中。

但是当我尝试使用 require() 使用它时,它会在控制台中给出上述错误并建议通过 vs 代码使用 ES6 module 并且 require 是common.js

的模块

我有一个 package.json 文件,lodash 被列为依赖项。我可以使用节点服务器在命令行中运行 lodash,但不能在浏览器中运行

除了 node-js 之外,我们是否需要安装任何其他软件包才能运行 require() 函数? 我究竟做错了什么? 我在 Windows 上并使用最新版本的节点和 npm 让 a = require('lodash');

【问题讨论】:

  • 你有 package.json 文件吗
  • 是的,我有一个 package.json 文件,lodash 被列为依赖项。我可以在命令行中运行 lodash,但不能在浏览器中运行。

标签: javascript node.js npm lodash


【解决方案1】:

如果 VSCode 建议你使用 ES6 模块,那么你可能在你的项目中打开了 ES6 模块支持,它覆盖了 Node 对 CommonJS 模块的默认支持。

使用

import lodash from 'lodash';

而不是要求。


重新编辑:

我可以使用节点服务器在命令行中运行 lodash,但不能在浏览器中运行

嗯,是的。如果您在 Node.js 中运行旨在在 Node.js 中工作的程序,那么它就可以工作。如果您在浏览器中运行相同的程序,那么它将无法工作。仅仅在某个地方安装了 Node.js 并不会将浏览器变成 Node.js。

如果你想在浏览器中使用 ES6 模块,那么:

  • 它必须与浏览器兼容(lodash 可能是)
  • 您需要使用import lodash from "./url/to/lodash.js";,因为浏览器不支持解析 npm 路径。

如果模块不是为在浏览器中运行而设计的,那么您也许可以使用 Webpack 之类的工具以一种可行的方式将其捆绑起来(但这在模块中不起作用取决于提供的 API通过 Node.js,例如 fs)。

【讨论】:

  • 不工作。从'./node_modules/lodash'导入lodash;出现此错误 无法加载模块脚本:服务器以“text/html”的非 JavaScript MIME 类型响应。根据 HTML 规范对模块脚本强制执行严格的 MIME 类型检查。从'lodash'导入lodash;给出此错误 - 未捕获的类型错误:无法解析模块说明符“lodash”。相对引用必须以“/”、“./”或“../”开头。
  • @Husain — 不应该有服务器。你说你使用的是 Node.js。如果你使用的是网络浏览器,那么你就没有使用 Node.js。
【解决方案2】:

您可以使用 express 框架来处理 NODE js

let express = require('express') ;

【讨论】:

  • 对不起,我没听懂。我应该使用 npm 安装 Express 并使用它吗?
  • 是的,您可以使用 npm install express ..并需要它的功能
猜你喜欢
  • 2012-12-16
  • 2017-02-28
  • 2017-06-01
  • 2018-01-30
  • 2019-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多