npm链接无法在Windows上运行?

Niz*_*ond 5 node.js express

我正在使用节点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)
  • 我的模块确实是v0.0.2.
  • 我可以从main-app/node_module/my-module访问它
  • 此文件夹存在C:\ Users\Nizar\AppData\Roaming \npm \node_modules\my-module
  • my-module package.json有"name":"my-module"

此外,%NODE_PATH%已正确设置:

  c:\dev\main-app>echo %NODE_PATH%
  C:\Users\Nizar\AppData\Roaming\npm\node_modules
Run Code Online (Sandbox Code Playgroud)

想法?

ros*_*dia 8

有几件事要尝试.在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)

假设存在,那么问题很可能是:

  1. 缺少index.js文件(这是用于解析模块的默认文件名节点)
  2. 您使用的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)