NodeJS 包管理
NodeJS package management
我想 运行 这行简单的代码(使用 Node.js 8.0.0):
time node -e "console.log(require('bcrypt').hashSync(process.argv[1], 8));" your-password-here
在我的 RaspberryPi 运行ning Linux Alpine 上比较 bcrypt 和 bcryptjs。
起初它给了我:
module.js:487
throw err;
^
Error: Cannot find module 'bcrypt'
at Function.Module._resolveFilename (module.js:485:15)
at (...)
at evalScript (bootstrap_node.js:432:27)
所以我尝试用这个命令安装 bcrypt :
npm install -g --production bcrypt
这有效(由于我的 armv7 处理器未找到 linux 依赖项,因此从源代码进行回退编译后)。
但是当再次尝试测试命令时,我遇到了完全相同的错误(找不到模块 'bcrypt')。
只有在我认为 "project local" 安装没有“-g”选项(即使我没有项目)之后它才最终起作用,并且在 运行 宁我的时候找到了 bcrypt测试命令。
npm install bcrypt
熟悉 NodeJS 的人能给我解释一下这个奇怪的机制吗?
全局安装的包不会在所有地方自动可用。像你那样安装一个平台是一个好主意,在这个平台上,你显然希望尽可能少地编译,因为它需要多长时间;但是,您仍然需要 link 在您的本地项目中全局安装包:
# install globally
npm install -g --production bcrypt
# link locally (you must run this in your project's directory)
npm link bcrypt
这将创建 symlink(s),它将简单地使全局安装的模块在本地项目的 node_modules
目录中可用 - 比重新编译模块一次要快得多每个需要它的项目。
但是,请务必记得在发布您需要的新版本时再次更新 bcrypt 运行ning npm install -g --production bcrypt
。 运行 npm update
在您的项目中是不够的。
npm link
文档,值得一读。请注意,如果 运行 没有包名称作为其参数,则此命令的行为完全不同。
我想 运行 这行简单的代码(使用 Node.js 8.0.0):
time node -e "console.log(require('bcrypt').hashSync(process.argv[1], 8));" your-password-here
在我的 RaspberryPi 运行ning Linux Alpine 上比较 bcrypt 和 bcryptjs。
起初它给了我:
module.js:487
throw err;
^
Error: Cannot find module 'bcrypt'
at Function.Module._resolveFilename (module.js:485:15)
at (...)
at evalScript (bootstrap_node.js:432:27)
所以我尝试用这个命令安装 bcrypt :
npm install -g --production bcrypt
这有效(由于我的 armv7 处理器未找到 linux 依赖项,因此从源代码进行回退编译后)。
但是当再次尝试测试命令时,我遇到了完全相同的错误(找不到模块 'bcrypt')。
只有在我认为 "project local" 安装没有“-g”选项(即使我没有项目)之后它才最终起作用,并且在 运行 宁我的时候找到了 bcrypt测试命令。
npm install bcrypt
熟悉 NodeJS 的人能给我解释一下这个奇怪的机制吗?
全局安装的包不会在所有地方自动可用。像你那样安装一个平台是一个好主意,在这个平台上,你显然希望尽可能少地编译,因为它需要多长时间;但是,您仍然需要 link 在您的本地项目中全局安装包:
# install globally
npm install -g --production bcrypt
# link locally (you must run this in your project's directory)
npm link bcrypt
这将创建 symlink(s),它将简单地使全局安装的模块在本地项目的 node_modules
目录中可用 - 比重新编译模块一次要快得多每个需要它的项目。
但是,请务必记得在发布您需要的新版本时再次更新 bcrypt 运行ning npm install -g --production bcrypt
。 运行 npm update
在您的项目中是不够的。
npm link
文档,值得一读。请注意,如果 运行 没有包名称作为其参数,则此命令的行为完全不同。