【问题标题】:How to import npm module with scoped name installed from github?如何导入从 github 安装的具有作用域名称的 npm 模块?
【发布时间】:2015-10-01 05:38:29
【问题描述】:

我正在尝试使用 npm 安装一个 github 项目的分支(在 master 而不是任何特定的提交,因为我想针对它进行开发):

% npm install parkan/graffiti-mongoose
@risingstack/graffiti-mongoose@2.0.0 node_modules/@risingstack/graffiti-mongoose

这似乎是在查找父 repo 并将其安装到我的 gh 上的 master 版本,到目前为止一切都很好。请注意,该包使用scoped package name semantics,我认为这是问题的一部分。

% npm list |grep mongoose
├── @risingstack/graffiti-mongoose@2.0.0 (git://github.com/parkan/graffiti-mongoose.git#01a8480fa7d787a4d74bf3bcb257d01b4d73129a)
% ls node_modules/@risingstack/graffiti-mongoose
CHANGELOG.md    LICENSE     fixture
CONTRIBUTING.md README.md   package.json

但是,我无法让节点导入或以任何明显的方式要求它:

> require('graffiti-mongoose');
Error: Cannot find module 'graffiti-mongoose'
    at Function.Module._resolveFilename (module.js:336:15)
    at Function.Module._load (module.js:286:25)
    at Module.require (module.js:365:17)
    at require (module.js:384:17)
    at repl:3:1
    at Object.exports.runInThisContext (vm.js:54:17)
    at _eval (/usr/local/lib/node_modules/babel/lib/_babel-node.js:86:26)
    at REPLServer.replEval (/usr/local/lib/node_modules/babel/lib/_babel-node.js:169:14)
    at bound (domain.js:250:14)
    at REPLServer.runBound [as eval] (domain.js:263:12)
> require('@risingstack/graffiti-mongoose');
Error: Cannot find module '@risingstack/graffiti-mongoose'
    at Function.Module._resolveFilename (module.js:336:15)
    at Function.Module._load (module.js:286:25)
    at Module.require (module.js:365:17)
    at require (module.js:384:17)
    at repl:3:1
    at Object.exports.runInThisContext (vm.js:54:17)
    at _eval (/usr/local/lib/node_modules/babel/lib/_babel-node.js:86:26)
    at REPLServer.replEval (/usr/local/lib/node_modules/babel/lib/_babel-node.js:169:14)
    at bound (domain.js:250:14)
    at REPLServer.runBound [as eval] (domain.js:263:12)
> require('risingstack/graffiti-mongoose');
Error: Cannot find module 'risingstack/graffiti-mongoose'
    at Function.Module._resolveFilename (module.js:336:15)
    at Function.Module._load (module.js:286:25)
    at Module.require (module.js:365:17)
    at require (module.js:384:17)
    at repl:3:1
    at Object.exports.runInThisContext (vm.js:54:17)
    at _eval (/usr/local/lib/node_modules/babel/lib/_babel-node.js:86:26)
    at REPLServer.replEval (/usr/local/lib/node_modules/babel/lib/_babel-node.js:169:14)
    at bound (domain.js:250:14)
    at REPLServer.runBound [as eval] (domain.js:263:12)

我如何需要这样的子目录中的包?

【问题讨论】:

  • 问题似乎是父包是一个作用域名称:@risingstack/graffiti-mongoose
  • 我很新鲜npm/node: % npm --version 3.3.4 % node --version v4.1.1

标签: node.js npm javascript


【解决方案1】:

这似乎是 npm 中的一个错误。检查 repo 并从本地文件系统安装工作正常。

问题提交:https://github.com/npm/npm/issues/9798

编辑:这似乎是从 github 安装的限制,如果没有签入工件并且必须在模块可用之前运行预发布脚本,请参阅https://github.com/npm/npm/issues/3055

【讨论】:

    【解决方案2】:

    我添加到我的 package.json 中:

        "some_github_package": "git+https://github.com/user_name/package_name.git",
    

    然后运行 ​​npm install 就可以搞定了

    【讨论】:

    • 嗨,Meir,我没有遇到 npm install 的问题,而是在安装包后导入包 - 请查看我的问题正文。
    • 得到了你。不确定命名,但我没有看到任何 index.js 文件。看看我分叉和使用的库的结构:github.com/meiriko/winston-pushbullet。我的索引文件说: module.exports = require('./lib/winston-pushbullet');
    • index.js 在src,你可以从package.json 中看到。但是,似乎有一个错误导致无法安装一堆文件,请参阅下面的答案。
    猜你喜欢
    • 2016-12-23
    • 2016-07-13
    • 2021-04-13
    • 2018-02-21
    • 2023-03-25
    • 1970-01-01
    • 2013-06-12
    • 2015-08-21
    • 2018-06-25
    相关资源
    最近更新 更多