作为 npm 模块安装和访问本地文件夹

Posted

技术标签:

【中文标题】作为 npm 模块安装和访问本地文件夹【英文标题】:Install & access a local folder as a npm module 【发布时间】:2018-10-13 18:26:13 【问题描述】:

文件结构如下:

= (main-folder)
 - package.json
 - ...
 = server
  - index.js
  - ...
 = deploy-abc // new server
  = src
   - index.js
 = src
  - index.js
  - ...

我正在尝试将“deploy-abc”作为模块安装在主文件夹应用程序中。所以,我跑了:yarn add "/var/www/main-folder/deploy-abc"。它安装正确,我可以看到 package.json 中列出的“deploy-abc”依赖项。

但是,当我尝试访问 deploy-abc 的导出对象时,我收到节点错误 Error: Cannot find module 'deploy-abc'。例如:在主文件夹中的某个文件中:

const deployAbc = require("deploy-abc");
console.log(deployAbc); // error

我哪里错了?

【问题讨论】:

【参考方案1】:

根据节点文档:https://nodejs.org/api/modules.html#modules_loading_from_node_modules_folders

如果传递给 require() 的模块标识符不是核心模块,并且不以 '/'、'../' 或 './' 开头,则 Node.js 从当前模块,并添加 /node_modules,并尝试从该位置加载模块。

因此,鉴于您的模块现在位于主文件夹中,您需要它的方式取决于相对位置。如果您从/src/index.js 那里要求它,那么您将需要:

const deployAbc = require('../deploy-abc')

在这种情况下,您也不需要指定实际文件,因为它默认为index.js。但是,如果入口文件是 dabc.js 或其他名称,您还需要在位置中指定。

【讨论】:

感谢您提供的信息,但是,由于某种原因,它不起作用。它继续给Error: Cannot find module "../deployAbc。索引文件在/deploy-abc/src/ 里面,我试过const abc = require("../deploy-abc/src/"),但是也没有用。发出请求的文件位于“服务器”文件夹中。 您试图要求的文件位于何处?你想要的文件的确切路径是什么?【参考方案2】:

您可能必须使用确切的相对路径。例如const deployAbc = require("../deploy-abc")

【讨论】:

以上是关于作为 npm 模块安装和访问本地文件夹的主要内容,如果未能解决你的问题,请参考以下文章

NPM 安装被阻止 - 通过本地文件系统导入依赖项

Npm pack 包含本地模块

解决本地文件跨域的问题,npm install anywhere -g

如何让 Grunt Deploy 使用全局 NPM 模块而不是本地模块

react——setupProxy.js_配置网路代理访问——访问本地资源

本地 NPM 模块未正确安装