npm没有为自己的本地安装包创建./node_modules

时间:2013-04-11 13:40:50

标签: node.js npm

我正在研究使用C ++开发Nodejs扩展的Hello World示例。一切正常,我可以运行这个例子。但是我想使用 require('hello')而不是 require('./ build / Release / hello')我理解需要将文件放在一个 node_modules 文件夹。当我按照有关使用 NPM安装来本地安装软件包的说明时,不会创建文件夹 node_modules (经过几个小时我开发了一种解决方法,但它很乱)。

我正在使用Mac OS Mountain Lion和NPM 1.2.17版。 NPM在本地和全局安装存储库(和卸载)包,没有任何问题。我检查了 NPM root ,它指向一个node_modules文件夹并按照previous question中的建议重新安装了NPM。文件如下:

的package.json

{
  "name": "HelloWorld",
  "version": "1.0.0",
  "description": "Nodejs Extension using C++",
  "main": "./build/Release/hello.node",
  "scripts": {
    "preinstall": "node-gyp rebuild",
    "preuninstall": "rm -rf build/*"
  },
  "repository": "",
  "readmeFilename": "README.md",
  "author": "",
  "license": ""
}

binding.gyp

{
  "targets": [
    {
      "target_name": "hello",
      "sources" : [ "src/hello.cc" ]
    }
   ]
}

hello.cc

#include <node.h>
#include <v8.h>

using namespace v8;


Handle<Value> Method(const Arguments& args) {
   HandleScope scope;
   return scope.Close(String::New("Hello, World!"));
}

void init(Handle<Object> exports) {
  exports ->Set(String::NewSymbol("hello"),
    FunctionTemplate::New(Method)->GetFunction());
}

NODE_MODULE(hello, init)

由于我缺乏使用NPM的经验,我觉得我遗漏了一些简单的东西,因此会感激任何帮助。

此外,我是Stack Overflow的新手,因此我将非常感激地收到有关如何改进任何未来问题的任何指导。

1 个答案:

答案 0 :(得分:1)

包的名称由package.json中的name属性决定。你设置它的方式将与

一起使用
`require("HelloWorld")`

你有

`"name": "HelloWorld"`

如果你想要它

`require("hello")`

只需将package.json文件更改为

即可
`"name": "hello"`

您的安装问题 - 运行npm install的方式和位置?我创建了一个与HelloWorld相同级别的HelloWorldClient目录并运行

`npm install ../HelloWorld/`

工作得很好。我的客户端代码(在将包名更改为hello之后)也起作用: test.js:

var hello = require('hello');
console.log(hello.hello());