node.js - 从 node_modules 位置以外的位置解析 nodejs 模块,有可能吗?
问题描述
例如,当我需要一个位于内部的模块时,node_modules
我可以编写const module = require('module')
或import module from 'module'
. 如果模块位于我需要写的另一个位置const module = require('../location/module')
,等等......
这种行为并不总是需要的,例如,如果我有我希望用户能够复制/粘贴和运行的示例,并且还可以从项目文件夹本身运行此示例。
这可以实现吗?
解决方案
我不明白为什么我被否决了,但我最终编写了以下包装器来完成这项工作:
const customRequire = function (moduleName, path) {
let module
try {
module = require(moduleName)
} catch (e) {
try {
module = require(`${path}/${moduleName}`)
} catch (e1) {
throw Error(`module ${moduleName} on path ${path} wasn't found`)
}
}
return module
}
现在,如果您复制/粘贴此代码,它将起作用。如果您将在项目中运行它,其中定义了所需的模块并且不位于node_modules
它也可以工作。
上述解决方案适用于 CommonJS 模块系统,对于 ES6,您需要使用该功能import
,动态导入模块
import('/modules/my-module.js')
.then((module) => {
// Do something with the module.
});
推荐阅读
- java - 如何实现连接管理?
- select - 如何在 Google Big Query 中将两个值与 SQL 进行比较?
- reactjs - React Redux Store Layout:如何处理“添加项目”请求的“待处理”状态?
- elasticsearch - Liferay 7.1 中使用 Elasticsearch 的自定义构面
- db2 - WinSQL ORDER BY 字母数字 DB2 语法
- javascript - 使用多个输入元素时未触发 Android Chrome 按键事件“Enter”
- c# - 尝试在 foreach 循环中将对象附加到 Enumerable
- jquery - jquery - 循环遍历具有不同数组键的选择字段数组
- c++ - 出队时并发队列卡住
- amazon-web-services - 为什么我会收到此错误?UnknownEndpoint:无法访问的主机:`devicefarm.us-east-1.amazonaws.com'