如何在 node.js 项目子文件夹中使用 require()

Posted

技术标签:

【中文标题】如何在 node.js 项目子文件夹中使用 require()【英文标题】:How to use require() in a node.js project subfolder 【发布时间】:2018-01-26 07:09:26 【问题描述】:

我的 Node.js 项目的目录结构如下:

server.js package.json ... 公开 app.js index.html

require() 的调用在server.js 中可以正常工作,但是当我尝试在app.js 中请求一个包时,会抛出ReferenceError

 require is not defined at app.js:1

如何从不在项目全局范围内的文件中请求节点模块?

【问题讨论】:

require('../../server.js'); 当我将它包含在 app.js 中时,会引发同样的错误。 【参考方案1】:

使用类似var db = require('../model/db');的东西

它基本上意味着../从当前目录向上移动一步,然后进入模型,然后到db。

您需要使用它来向上移动目录结构,然后在 require 中使用它。

node.js 是一个服务器端的 javascript 执行环境,它 结合了 V8 Javascript 引擎和一堆服务器端 图书馆。 require() 是 node.js 添加到 环境。因此,当您在终端中运行 node 时,您正在运行一个 包含 require() 的环境。

require() 不是浏览器内置的功能。这是一个 node.js 的特定功能,而不是浏览器的特定功能。所以,当你尝试 让浏览器运行你的脚本,它没有 require()。

为了使用 Require Js 。只要关注这个link

【讨论】:

问题不在于路径。就是require没有定义 @blex 如果这是问题所在,那么它是如何在 server.js 中工作的? server.js 在 NodeJS 中运行。 app.js 在浏览器中运行(因为它在 public 文件夹中)。所以,为了能够在浏览器中使用require,他需要在页面上加载RequireJS库。然后,他需要将节点模块提供给浏览器like this。我不会将此作为答案发布,因为我不确定是否需要其他步骤,但这对我来说似乎是合乎逻辑的。 这件事让我想起了@blex。谢谢刚刚忽略了。更新了报价的答案,您甚至可以回答这个问题,因为这是您的想法,后来让我感到困惑 @BlakeAllen 我已经更新了 require js 链接,它包含如何在节点 js 中使用它的步骤。我认为这对你有用。

以上是关于如何在 node.js 项目子文件夹中使用 require()的主要内容,如果未能解决你的问题,请参考以下文章

如何在node.js中将mysql查询的结果输出为json文件

node.js上传下载pdf文件

如何在 node.js 中获取 / 和 /:someText?

如何使用 node.js 更改前端 html

Req.body 在 node.js 中不可迭代

如何使用 node.js 访问 json 对象的子元素