我想使用sinopia设置私有npm注册表,并执行了npm install -g sinopia
,但是发生了一些错误消息:
> [email protected] install /usr/local/lib/node_modules/sinopia/node_modules/crypt3
> node-gyp rebuild
gyp WARN EACCES user "root" does not have permission to access the dev dir "/root/.node-gyp/4.2.3"
gyp WARN EACCES attempting to reinstall using temporary dev dir "/usr/local/lib/node_modules/sinopia/node_modules/crypt3/.node-gyp"
make: Entering directory `/usr/local/lib/node_modules/sinopia/node_modules/crypt3/build'
CXX(target) Release/obj.target/crypt3/crypt3.o
In file included from ../crypt3.cc:7:0:
../node_modules/nan/nan.h:261:25: error: redefinition of âtemplate<class T> v8::Local<T> _NanEnsureLocal(v8::Local<T>)â
NAN_INLINE v8::Local<T> _NanEnsureLocal(v8::Local<T> val) {
^
../node_modules/nan/nan.h:256:25: error: âtemplate<class T> v8::Local<T> _NanEnsureLocal(v8::Handle<T>)â previously declared here
NAN_INLINE v8::Local<T> _NanEnsureLocal(v8::Handle<T> val) {
^
../node_modules/nan/nan.h:661:13: error: ânode::smallocâ has not been declared
, node::smalloc::FreeCallback callback
^
我可以看到.h
与C或C ++相关的文件;怎么会这样呢?我在sinopia中发现的所有东西都是关于JavaScript的。
怎么npm install
办?我认为,它仅应启动一些下载过程。
npm install <package>
或npm install -g <package>
将
在node_modules文件夹中下载使用参数指定的npm软件包,或在package.json文件中以及其依赖项(从您定义的npm存储库主机)下载。(或使用它的现有本地副本。请参见shrink-wrapping)
为自身和每个依赖项运行pre-install
,install
和post-install
脚本。查看生命周期脚本
-g指令告诉npm将软件包安装在全局共享的node_modules文件夹中(通常在node所在的位置)。由于bin链接到PATH文件夹(通常为usr / local / bin),因此这也将允许您从命令行访问模块。检查此链接
对于sinopia,它们没有标准package.json
文件,而具有package.yaml文件。检查yamp
插件。
如果您查看他们的预发布脚本,则该脚本包含
prepublish: js-yaml package.yaml > package.json
将其package.yaml转换为package.json。在他们的package.json中,他们对crypt3包有依赖性。
如果是crypt3(sinopia依赖项之一),请检查package.json。它包含
"scripts": {
"test": "node test/test.js",
"install": "node-gyp rebuild"
},
因此,当安装了npm的sinopia时,它也会下载并安装所有依赖项。安装crypt3后,将运行“ node-gyp rebuild”,这就是为什么您在控制台中看到本机c / c ++编译输出的原因。
您可以自己尝试
npm install -g node-gyp && node-gyp rebuild
在控制台中
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句