如何在 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文件