问题标签 [npm-link]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
angular - Angular 5 Upgrade NullInjectorError: No provider for InjectionToken LocaleId
I have an Angular 4 app that I have upgraded to Angular 5 with CLI 1.5.4. I also have a shared library using npm link. After upgrading I had to add this to my tsconfig.app.json to get the CLI building again:
After a successful build, I am presented with the following error when visiting localhost:4200
I could not find any references to LOCALE / LocaleId in my project. I suspect the linked library might be the issue as I had the same NullIjectorError for Http (library uses Http, project uses HttpClient) but it has since disappeared after adding HttpClient to the library's main module, even after reverting back and removing it... very strange.
angular - CLI 从 1.2.8 升级到 1.3.0 后 Angular 5 损坏
我有一个以前在 Angular CLI 1.2.8 上运行的 Angular 5 应用程序,一切运行良好。升级到 1.3 之后(在我升级到 1.5.4 的路上),我们正在使用的外部 npm 链接库似乎存在问题,因为我NullInjectorError: No provider for Http!
在访问 localhost:4200 时得到了一个
当我将 HttpModule 添加到 shared-lib 模块时,错误消失了,但我得到了额外的提供程序错误。我期望共享库像以前一样使用主应用程序中的模块,而不是共享库模块。在此示例中,shared-lib 具有依赖于 HttpModule 的 Angular 服务,但 shard-lib 不导入 HttpModule。我正在使用的主要项目确实导入了 HttpModule。
我的 tsconfig.json:
我的 tsconfig.app.json:
更新:我发现删除共享库 node_modules 中的@angular 文件夹后,该项目可以工作。我不确定为什么 tsconfig.json 中的路径对象不会仅将 Angular 的使用覆盖到我的项目的 node_modules 中。
javascript - Webpack 在使用 npm 链接时出现 eslint 错误
我设置了一个多包项目,其中有一个依赖于 TypeScript 库的 JavaScript 包。最初我安装了 Sinopia 并且每次对它进行更改时都会重新安装该库。然后我看到npm link
并认为它会更容易开发。不幸的是,当我链接库(使用npm link ../typescript-package
)并构建时,它给出了一个错误:
由于它们是单独的包,我不太清楚为什么 Webpack 试图将 eslint 应用于这个包。这是我的webpack.common.js
文件(使用合并和 dev vs prod 配置应该无关紧要):
如果需要,我还可以提供其他配置或 package.json 文件。
node.js - 链接多个文件夹时 NPM 链接错误 EEXIST -4075
我正在开发一个安装程序,在我们安装文件后,我们运行一个使用 NPM Link 设置一些文件夹的脚本。
当我在我的虚拟机上运行脚本时,它没有任何错误/警告。当我尝试在我自己的机器上运行它时,我收到了这个错误:
84 详细节点 v9.5.0
85 详细的 npm v5.6.0
86 错误路径 C:\Users\me\AppData\Roaming\npm\node_modules\module
87 错误代码 EEXIST
88 错误 errno -4075
89 错误系统调用符号链接
90 错误 EEXIST:文件已存在,符号链接 'C:\Users\me\AppData\Roaming\npm\node_modules\module' -> 目标文件夹
91 错误文件存在:C:\Users\Me\AppData\Roaming\npm\node_modules\module
92 错误 将其移开,然后重试。
93 详细退出 [ -4075, true ]
现在我知道这个文件已经存在,我已经链接了它。但是我在做同样事情的虚拟机上没有收到这个错误。每次链接时都需要删除 node_module 吗?那不可能是对的,对吧?
我已经在自己的机器上重新安装了 NodeJS。
这基本上就是我所做的:
我必须为多个文件夹执行此操作。有些文件夹需要链接所有 3 个,而其他文件夹只有 1 个或 2 个。因此,对于我在其中执行此操作的每个文件夹,每次操作都会出现错误。它执行链接,但我真的想摆脱错误,特别是因为它可以在我的 VM 上运行。
我已经尝试进入文件夹并调用 NPM Link(不带参数),但这似乎没有任何作用。
node.js - npm 5 用 node_modules 作为符号链接丢失了它
我有一个系统,它构建了几个 node.js 项目并分别维护每个项目的 node_modules 缓存。我正在尝试从 npm 3 迁移到 npm 5,但下面的问题导致了很多问题。
node_modules
每个项目内部都有一个指向真实模块目录的符号链接,该目录单独存储和维护。虽然这在 npm 3 中很有效,但当npm install
在同一位置重新调用时,npm 5 会不断地迷失自己。npm 只是一遍又一遍地尝试删除/移动所有内容,更糟糕的是有时会丢失一些包。
这些命令演示了这个问题:
我错过了什么吗?请协助 ..
谢谢你
bash - 在终端上的 grep 中保留 npm 链接文件夹颜色
我有一个文件夹,node_modules
其中链接到另一个项目(使用npm link my-plugin
)。让我们称之为my-plugin
。
当我运行时,ls node_modules
我会得到一个列表,其中包含my-plugin
当然包含的所有文件夹。该my-plugin
文件夹具有不同的颜色(请注意它已链接)。
现在,我有很多文件夹,node_modules
我只想获取某个文件夹,所以我使用grep
. 像这样的东西:
问题是grep
绘制表达式,所以我错过了my-plugin
.
问题是有时我使用链接运行我的应用程序,有时使用原始插件运行我的应用程序,所以我需要知道它现在是否链接。
我希望这很清楚。如果没有,请告诉我。
node.js - 有没有办法阻止 npm 获取已经链接到的包
尝试将 npm link 用于几个本地项目时,我遇到了问题。
假设我有两个项目,A 和 B,B 依赖于 A。另一个项目 C 也需要 A 和 B。但现在我只想专注于 A 和 B!
我从命令行执行的步骤:
- cd进入项目A目录
npm install
- 构建项目,将构建的内容输出到
包含项目 package.json 的 dist 子文件夹(在构建
时复制到 dist) - cd 到 dist 文件夹,然后
run npm
链接
此时,我可以在我机器上的全局 node_modules 文件夹中看到项目 A 的全局链接包。
下一个...
- cd进入项目B目录
npm link projectA
现在可以在我的项目 node_modules 文件夹中看到它作为符号链接文件夹列出。- npm 安装
- 构建项目(也输出到带有 package.json 副本的 dist 文件夹)
- cd 进入 dist 目录
- 运行
npm link
- 错误!
因此,在尝试为项目 BI 的构建目录添加新 npm 链接的最后一步中,会出现错误:
所以我可以在这里看到 npm 正在尝试从 npm 注册表中查找包。
这是否意味着 npm 在尝试从注册表安装之前不会检查链接的包?
此外,当我npm link
从项目的 dist 目录中运行命令时,它会根据在构建时复制到 dist 文件夹的 package.json 关闭并安装依赖项。有没有办法防止这种情况发生?
我确实尝试过使用 yarn 及其链接命令,运行与上述相同的步骤,但在上面详述的同一步骤中遇到完全相同的问题\相同的错误。
这可能是我的用户错误!?
node.js - 如何用 babel 处理`npm link`?收到意外的令牌错误
我npm link
在父仓库(A)上使用链接子仓库(B)。
工作正常,npm link
但 Repo A 正在使用 babel 转换代码,并且似乎忽略了node_modules
依赖项或符号链接。
我的回购 B 中有一个扩展运算符,我收到以下错误:
有趣的是我使用的是节点版本 9.4.0,它应该原生支持这个。
我package.json
的依赖:
我的.babelrc
:
npm - 从公共文件夹执行 npm 链接
我使用自定义构建的库,然后使用“ npm link ”在其他库之间链接它们。一个问题是,
如果我执行“ npm install ”,链接就会消失,然后我将不得不手动进行链接。
为了解决这个问题,我正在考虑构建一个脚本来在需要的地方跨库执行 npm 链接,但我不确定这是否可行,因为我们必须在命令行的确切路径上执行 npm 链接,而不是从命令行的公共路径。
例子:
我建立了一个名为 @mycustomlib/ui-components 的库,并在其他项目中使用它们。
为了让我使用它,我必须在相应的项目文件夹中创建链接,否则我将无法导入。
npm - 本地项目的“npm install”出现意外行为
设想
- 我在用
npm 5.8.0
- 我有一个
ProjectA
和一个ProjectB
ProjectB
是一个依赖ProjectA
- 这两个项目都通过 Webpack 捆绑和运行(如果需要,我可以提供我的配置)。
出于开发目的,我ProjectB
在ProjectA
package.json 中通过"projectB": "file:../projectB"
. 基本上我需要的唯一文件在lib
Webpack 输出的文件夹中。
问题
如果我使用上述配置安装此依赖项,npm 会将整个ProjectB
-folder 安装到 node_modules 中。它将包含所有projectB
的 node_modules、配置文件、src 文件夹等。
除了这不是预期的行为之外,这还会导致错误。例如,一些已安装的@types 会抛出错误,因为它们被认为是重复的。@types 和其他包ProjectA
似乎ProjectB
“碰撞”。"dependencies"
这些包在两者中都被引用,ProjectA
并且ProjectB
大部分被引用。
我试过的
npm 链接
如果我使用 npm 链接,则会出现相同的(见上文)行为。整个文件夹将安装到ProjectA
's node_modules.
npm 包
我实际上确实有一个-file in可能很重要。所以当我使用一个文件时就生成了。如果我然后通过一切正常安装。我认为确实考虑了-file 。.npmignore
ProjectB
npm pack
projectB.tgz
ProjectB
"projectB": "file:../projectB.tgz"
npm pack
.npmignore
我对这个解决方案的问题是,我不仅必须在ProjectB
每次对其应用更改时进行构建,而且还要npm pack
对其进行构建。
删除ProjectB
的 node_modules
我想这是最愚蠢的解决方法。如果我再次引用ProjectB
via"projectB": "file:../projectB"
但在构建它之后删除它的 node_modules,它们在安装后不会出现。因此,我不再有任何例外。
我想这也不是一个有效的解决方案,因为仍在ProjectB
安装整个 -folder。
问题
这里的最佳做法是什么?什么是从本地来源安装ProjectA
的合理配置?ProjectB
ProjectB