我正在使用节点v0.10.32.Windows 8.1.
我的目标是将节点应用程序链接为另一个主应用程序中的node_module.
我去my-module文件夹做了
npm link
Run Code Online (Sandbox Code Playgroud)
然后,我转到main-app文件夹并执行
npm link my-module
Run Code Online (Sandbox Code Playgroud)
这是结果
c:\dev\main-app>npm link my-module
unbuild my-module@0.0.2
c:\dev\main-app\node_modules\my-module -> C:\Users\Nizar\AppData\Roaming\npm\node_modules\my-module -> C:\dev\my-module
Run Code Online (Sandbox Code Playgroud)
但是,链接似乎不起作用,require('my-module')抛出以下错误
c:\dev\main-app>node app.js
module.js:340
throw err;
^
Error: Cannot find module 'my-module'
at Function.Module._resolveFilename (module.js:338:15)
Run Code Online (Sandbox Code Playgroud)
此外,%NODE_PATH%已正确设置:
c:\dev\main-app>echo %NODE_PATH%
C:\Users\Nizar\AppData\Roaming\npm\node_modules
Run Code Online (Sandbox Code Playgroud)
想法?
有几件事要尝试.在Windows上,npm link通过创建连接点来处理.发出dir node_modules命令应该会产生如下行:
01/15/2016 11:02 AM <JUNCTION> my-module [C:\Users\Nizar\AppData\Roaming\npm\node_modules\my-module]
Run Code Online (Sandbox Code Playgroud)
假设存在,那么问题很可能是:
index.js文件(这是用于解析模块的默认文件名节点)index.js文件与模块的主文件不同,在这种情况下,您需要使用文件中的main密钥告诉节点该文件是什么package.json.例如(取自这里):
{
"name": "node-js-sample",
"version": "0.2.0",
"description": "A sample Node.js app using Express 4",
"main": "index.js", // <-- LIKE THIS
"scripts": {
"start": "node index.js"
},
"dependencies": {
"express": "^4.13.3"
},
"engines": {
"node": "4.0.0"
},
"repository": {
"type": "git",
"url": "https://github.com/heroku/node-js-sample"
},
"keywords": [
"node",
"heroku",
"express"
],
"author": "Mark Pundsack",
"contributors": [
"Zeke Sikelianos <zeke@sikelianos.com> (http://zeke.sikelianos.com)"
],
"license": "MIT"
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7689 次 |
| 最近记录: |