【问题标题】:npm link not working on windows?npm 链接在 Windows 上不起作用?
【发布时间】:2016-01-15 16:12:07
【问题描述】:

我正在使用节点 v0.10.32。 Windows 8.1。

我的目标是将节点应用程序链接为另一个主应用程序中的 node_module。

我去我的模块文件夹并做

npm link

然后,我转到主应用文件夹并执行

npm link my-module

这是结果

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

但是,链接似乎不起作用,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)
  • 我的模块确实是 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

想法?

【问题讨论】:

  • 当您发出dir node_modules 时,您是否看到类似01/12/2016 09:21 PM <JUNCTION> my-module [C:\Users\Nizar\AppData\Roaming\npm\node_modules\my-module] 的内容?如果不是,那么链接出了点问题
  • 哦,是的! 2016 年 1 月 15 日上午 11:02 我的模块 [C:\Users\Nizar\AppData\Roaming\npm\node_modules\my-module]
  • 它很奇怪,我仍然可以使用 cd 访问它。想法?
  • 如果你cd node_modules\my-module,你最终会进入你的模块文件夹,对吧?使用 index.js 或 package.json 中 main 键指定的其他内容?
  • 是的,index.js 不是我用于 my-module 的文件!

标签: node.js express


【解决方案1】:

有一些事情可以尝试。在 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]

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

  1. 缺少index.js 文件(这是节点用于解析模块的默认文件名)
  2. 您正在使用与index.js 不同的文件作为模块的主文件,在这种情况下,您需要通过在package.json 文件中使用main 键来告诉节点该文件是什么。

例如(取自here):

{
  "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"
}

【讨论】:

    猜你喜欢
    • 2014-10-09
    • 1970-01-01
    • 2011-12-31
    • 1970-01-01
    • 2018-09-07
    • 2018-06-22
    • 1970-01-01
    • 2021-07-28
    • 2017-05-25
    相关资源
    最近更新 更多