lia*_* xu 3 node.js npm sinopia
我想使用sinopia建立一个私人npm注册表,我执行'npm install -g sinopia'.但是有些错误消息如下所示.
> crypt3@0.1.8 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
^
Run Code Online (Sandbox Code Playgroud)
我可以看到与C或C++相关的.h文件,怎么会发生,因为我发现sinopia中的所有内容都是关于javascript的.这是gitbhub的位置.https://github.com/rlidwka/sinopia
所以我想知道'npm install'做什么,因为在我看来它只做一些下载过程.
非常感谢.
在g
在npm install -g
是要安装特定的NPM模块系统范围内(全局)一个标志,表示。如果没有该g
选项,模块将本地安装在名为node_modules
-try it!的当前目录中!
全局安装的软件包的位置可能会有所不同,具体取决于您安装节点的方式。通过npm list -g
在命令行中键入来找出它们的安装位置。
编辑:您的错误可能是由您的 npm 根目录中的权限不足引起的,但也可能是该库不支持您使用的节点版本。检查node
您需要运行crypt3
的版本,并确保您的节点版本与 ( node -v
)匹配。如果与需要的版本不匹配,可以使用nvm等节点版本管理器切换到该版本,然后重试npm install
。
npm install <package>
或npm install -g <package>
意志
下载您使用参数指定的npm包,或者在package.json文件中,以及它在node_modules文件夹中的依赖项(来自您定义的npm存储库主机).(或者使用已经存在的本地副本.请参阅shrink-wrapping)
运行pre-install
,install
并post-install
为自己和每个依赖脚本.请参阅Lifecycle Scripts
-g指令告诉npm将包安装在全局共享node_modules文件夹中(通常是节点所在的位置).这也允许您从命令行访问模块,因为bin符号链接到PATH文件夹(通常是usr/local/bin).检查此链接
在sinopia的情况下,他们没有标准package.json
文件,他们有一个package.yaml文件.检查yamp
插件.
如果您检查他们的预发布脚本,它包含
prepublish: js-yaml package.yaml > package.json
Run Code Online (Sandbox Code Playgroud)
将package.yaml转换为package.json.在他们的package.json中,他们依赖于crypt3包.
在crypt3(sinopia依赖项之一)的情况下,检查package.json.它包含
"scripts": {
"test": "node test/test.js",
"install": "node-gyp rebuild"
},
Run Code Online (Sandbox Code Playgroud)
因此,当sinopia安装了npm时,它也将下载并安装它的所有依赖项.安装crypt3后,将运行"node-gyp rebuild",这就是您在控制台中看到本机c/c ++编译输出的原因.
你可以自己尝试一下
npm install -g node-gyp && node-gyp rebuild
Run Code Online (Sandbox Code Playgroud)
在控制台中
归档时间: |
|
查看次数: |
3321 次 |
最近记录: |