问题标签 [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.
node.js - Node.js - Mongoose 不访问包含的包中的数据库
我最近开始研究 MEAN 技术。
我有一个模块 myModule。它具有访问数据库的路线、服务、模型。
我在一个单独的目录中创建了另一个项目 myAnotherModule,并将“npm link”编辑到 myModule 中。当我尝试在 myAnotherModule 中使用 Mongoose 时,它无法使用正确的凭据访问数据库。
在 myAnotherModule 的以下代码中,
它没有找到mongoose.connection.db
anddb
是未定义的。而如果我在 myModule 中使用这些行,那么代码就可以正常工作。
为什么 myAnotherModule 找不到mongoose.connection.db
?npm 链接是如何工作的?
npm - npm install 清除所有链接的模块
说 I npm link
moduleA
,然后 inprojectB
我运行npm link moduleA
,然后我以一个符号链接结束moduleA
in projectB/node_modules/moduleA
。
但是,如果我在 中运行npm install
,projectB
那么moduleA
现在丢失了projectB/node_modules
,我必须npm link moduleA
再次运行。
它有办法在 snpm link
之间持久化 'd 模块npm install
吗?
javascript - npm:在 node_modules 中缺少传递依赖项
我有两个本地 npm 项目,A
和B
. 假设A
依赖react
并将其列为package.json
文件中的依赖项。我npm link
用来A
提供B
.
B
取决于A
和react
。我习惯npm link A
使用本地版本的A
. 但是,据我所知,这A
已经依赖于react
,我不包含react
在我package.json
的B
. 当我打电话时,npm install
我希望 npm 在node_modules
文件夹中包含传递依赖项。但是,只要我不在自己的文件中包含传递依赖项,我就无法在其中找到它,也不能在 's 的代码中使用react
它。B
B
package.json
当我包含其他模块时react
,我也会得到传递依赖,比如fbjs
或encoding
解析到我的node_modules
文件夹中。
那么,错在哪里呢?A
/ 为什么不包含在B
's文件夹中的依赖项node_modules
?
angular - 两个角度项目的 Npm 链接问题
因此,当我尝试在一个使用 npm 链接的 Angular 项目中进行开发时,我遇到了一个问题,该库还包含它自己的节点模块文件夹。两者都需要自己的节点模块副本,因为两者都将包含自己的组件,并且消费者需要导入库项目的模块。
假设我有一个链接到 LibraryProject 的 ConsumerProject。我在命令行中运行以下命令:在 LibraryProject 的根目录
ConsumerProject 的根
两者都包含相同的以下依赖项/devDependencies:
“依赖”:{
},“开发依赖”:{
}
ConsumerProject 将从 LibraryProject 导入 LibraryModule。当我在 ConsumerProject 中运行 ng serve 时,出现以下错误:
重新编译代码将导致代码编译,当我加载页面时,我收到以下错误:未捕获错误:模块“AppModule”导入的意外值“LibraryModule”。请添加 @NgModule 注释。
我对这个问题做了一些研究,我发现的一件事是,如果安装的 angular/cli 包的版本为 1.2.7 或更低,您可以通过将此代码添加到您的 tsconfig.json 来成功运行您的项目文件:
这是假设您的 baseUrl 在您的 src 目录中。但是,在 cli 1.3.0 中使用它不再解决问题。通过简单地删除我的库中的节点模块文件夹,直到我需要使用它,我已经能够暂时绕过这个问题。但是,我希望对问题本身有某种实际的解决方案,而不必卸载并重新安装节点模块文件夹本身。
node.js - 父 React App linting 转译的依赖代码,通过 `npm link` 连接
我有一个 React 应用程序,它依赖于我创建的库中的另一个 React 组件。
当我在父级上运行构建脚本并通过 安装npm install
依赖项时,父级应用程序中不会对依赖项进行检查。
但是当我运行npm link
以便我可以在本地开发组件并让我的父应用程序运行它的构建脚本时,它会失败,因为它正在检查依赖项的转译代码。
任何想法为什么会发生这种情况?
更新
它似乎与最终捆绑包结束的目录的名称有关。我命名它bin
。通读 npm 文档似乎npm link
为模块目录以及bin
目录(如果有的话)创建了一个符号链接。我只是将名称更改为dist
,它解决了问题。不是最好的答案,但希望它可以帮助我遇到同样情况的人。
angular - 如何使用共享库“npm link”Angular 库?
对于我的 Angular 4.x 应用程序(App),我编写了一个当前不兼容 AoT 的库(例如“Lib”)。
App 和 Lib 都依赖于第 3 方库(例如“X”)。当我在 App 中使用“<strong>npm link”开发 Lib 时,由于 X 现在在 App/node_modules 和 Lib/node_modules 中,有些事情停止工作,并且在运行时似乎有来自 X 的多个提供程序实例。当我从 Lib/node_modules 中删除 X 一切正常。我怀疑这是提供者的一般限制,与 X 无关,但在我的情况下,X 实际上是 ngx-translate。
我发现的“最干净”的解决方法是只为 App 而不是 Lib 运行“npm install”。这样,大多数依赖项(包括 X)仅存在于 App node_modules 中,并且应用程序运行良好。但是,这会在开发 Lib 时导致 IDE 问题:1)如果我在 Lib 的项目上工作,它缺少依赖项并且没有智能感知(例如,它不构建)。2)如果我从 App 的项目(直接在 node_modules\Lib 上)开发 Lib,它没有正确的版本控制集成(例如,我无法签出)。
非常感谢!
node.js - 如何在模块 A 导入模块 B 的地方开发两个 Angular 模块
在 angularjs 中开发两个本地项目(其中一个导入另一个)时,我只需在模块 B 的文件夹中运行“npm link”,然后在我的主模块文件夹中运行“npm link module-B”,每当我更改模块 BI 中的文件时会直接在我的浏览器服务模块 A 中看到它。
但是使用 angular(4) 似乎并不容易。
我使用 ng-packagr 生成 dist 文件夹。
我在 dist 文件夹中运行 npm link 。
我在主模块的文件夹中运行 npm link module-B 。
然后我运行 ng serve --preserve-symlinks。
到目前为止一切顺利,它可以理解模块 B 的组件。但是如果我尝试更改模块 B 中的某些内容,重新运行 ng-packagr,我的主模块的“ng serve”无法编译,我必须停止并启动 ng serve .
我认为 ng-packagr 首先删除了 dist 文件夹,这会触发 ng serve 中的重建,失败并且不会注意到删除 dist 文件夹后新创建的文件。
我们是否必须使用 ng-packagr 或者是否有其他方式来进行多项目本地开发。
更新:
如果我们在 ng-packagr.js 中注释掉这一部分,它不会删除文件夹,并且每当文件更改并运行 ngpackagr 时浏览器都会更新:
return Promise.all([
/*rimraf_1.rimraf(p.dest),*/
rimraf_1.rimraf(p.workingDirectory)
]);
但是运行 ng-packagr 需要一些时间,具体取决于库的大小。因为它构建了整个事物,而不仅仅是更改的文件。
angular - Angular 5 - 如何生成定义文件
我一直在尝试几种方法,但我无法理解如何为我的项目生成定义文件。我有两个 angular-cli 生成的应用程序 A 和 B,我希望 A 将 B 作为一个包使用(带有 npm 链接)。据我了解,我需要在项目 B 中创建一个 index.ts 文件,其中包含我要导出的所有模块并运行“ng build”命令。我已经看到只创建捆绑包而不创建定义文件,我怎样才能生成定义文件?这是正确的方法吗?
我尝试了其他一些选项,例如“rollup”和“ngmakelib”,但完成这个简单的任务似乎非常困难。我们是否有一种简单的方法可以将 Angular 5 项目生成为库并从其他项目中使用这些库?