作为 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 install anywhere -g
如何让 Grunt Deploy 使用全局 NPM 模块而不是本地模块