我正在通过使用C++开发Nodejs扩展的Hello World示例。一切正常,我可以运行这个例子。然而我想用require('hello')而不是require('./ build/Release/hello')我知道需要将文件放在node_modules文件夹中。当我按照有关使用NPM安装的说明来本地安装软件包时,并未创建文件夹node_modules(经过许多小时,我开发了一种解决方法,但它很混乱)。npm不为自己的本地安装包创建./node_modules
我使用的是Mac OS Mountain Lion和NPM 1.2.17版。 NPM从本地和全局安装存储库中的软件包(并卸载),没有任何问题。我检查了NPM根目录,它指向一个node_modules文件夹并重新安装了NPM,如previous question中所建议的。该文件如下:
的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的新手,因此任何有关如何改进任何未来问题的指导都将非常感激。
感谢澄清使用**名:**开发一个软件包时。另外,我在开发软件的目录中运行NPM,这是问题所在。遵循你的建议,我搬到了不同的目录,并整理了**名称:** - 一切正常 - 谢谢。 – David 2013-04-11 18:09:59
啊,我明白了。是的,在项目的工作目录中运行npm install将安装项目package.json的依赖项部分中列出的模块。由于你的package.json没有依赖关系,所以没有安装任何东西,也没有创建node_modules目录。很高兴听到它现在正在工作。 – 2013-04-11 18:49:51