我正在通過使用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