这不是复制品。
以下答案无效或不相关:
NodeJS require a global module/package
官方文件的链接也可以
不
解决问题。
https://nodejs.org/api/modules.html#modules_loading_from_the_global_folders
问题:
我不仅将node.js用于实际的后端项目和前端打包,而且在我的文件系统周围还部署了各种实用程序来完成一些琐碎(有时也不那么琐碎)的工作,比如更新提示、显示帮助、检查运行过程、系统状态,列出特定的文件,自动执行日常任务等。对于这样的脚本,我需要一些全局可用的js文件,我想保存在文件系统的某个地方。现在我唯一的选择就是
require(process.HOME + '/js/somefile')
语法。
我试着写剧本:
$HOME/node_modules
$HOME/node_libraries
$HOME/.node_modules
$HOME/.node_libraries
也试图
export NODE_PATH
变量。
为什么不呢?
npm publish
?我有数百个基于node.js的cli实用程序。以及几十个共享的javascript。我试过在全球范围内发布和重新安装,但很麻烦。
那么什么是解决方案呢?
我需要的只是
lib.js
在里面
$HOME/js/lib.js
我可以从系统的任何地方只要输入
require('lib')
. 注意,调用者程序也可以位于文件系统中的任何位置。
更新
小剧本:
console.log(process.env[ 'NODE_PATH' ])
require('lib')
将打印:
/home/me/js:/home/me/soft/node/node-v6.1.0-linux-x64/lib/node_modules/
internal/modules/cjs/loader.js:583
throw err;
^
Error: Cannot find module 'lib'
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:581:15)
at Function.Module._load (internal/modules/cjs/loader.js:507:25)
at Module.require (internal/modules/cjs/loader.js:637:17)
at require (internal/modules/cjs/helpers.js:20:18)
at Object.<anonymous> (/home/me/test.js:2:1)
at Module._compile (internal/modules/cjs/loader.js:689:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
at Module.load (internal/modules/cjs/loader.js:599:32)
at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
at Function.Module._load (internal/modules/cjs/loader.js:530:3)
文件当然在
~/js
:
$ pwd
/home/me
$ cat ~/js/lib.js
console.log('it loaded')
$ node -v
v10.7.0
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 18.04.1 LTS
Release: 18.04
Codename: bionic