【发布时间】:2016-07-17 13:12:41
【问题描述】:
我正在查看一位同事编写的一些代码,她在 require 语句中使用了 @ 符号。这是其中一个文件的第一行:
var restServer = require('@company/config')
当我尝试运行此代码时,出现错误:
Error: Cannot find module '@company/config'
坦率地说,我的预期是,在我的目录中没有任何类似这样的东西需要识别!好像这里有什么魔法,我讨厌。
我只能猜测这是我没有接触过的一些晦涩难懂的 npm 或 Node 技巧,或者可能还有其他一些我没有掌握的黑暗配置艺术。任何信息都值得赞赏,即使它只是对 @ 如何与 require 一起使用的解释。
其他想法:Chef 参与了整个事情的某个地方,所以这可能是相关的。
更新:99% 确定这是npm config 目前工作方式的问题,但仍不确定如何修复它。
Update2 基于我发现的一些内容:
Dereks-MacBook-Pro:project-dir derekjanni$ npm config set //registry.npmjs.org/:authtoken $SECRET_TOKEN
Dereks-MacBook-Pro:project-dir derekjanni$ npm install
npm ERR! Darwin 15.0.0
npm ERR! argv "/usr/local/Cellar/node/5.5.0/bin/node" "/usr/local/bin/npm" "install"
npm ERR! node v5.5.0
npm ERR! npm v3.5.3
npm ERR! code E404
npm ERR! 404 Not found : @company/config
npm ERR! 404 '@company/config' is not in the npm registry.
【问题讨论】:
-
将操作与作用域注册表的作用域相关联。首次登录私有注册表时很有用:npm login --scope=@organization --registry=registry.organization.com,这将导致@organization映射到注册表,以便将来安装根据指定的包模式@organization/package。来自docs.npmjs.com/misc/config
-
npm help scope -
相关:为什么有些模块没有作用域?通过我的一个项目,我看到 D3、'has'、'postcss' 每个都有许多子组件,但它们不使用
@范围。他们是否因不受范围限制而获得了一些有益的财产?
标签: javascript node.js npm