我正在使用angular2-image-gallery https://github.com/BenjaminBrandmeier/angular2-image-gallery
导致我在生产(也是本地)时出现关于从角度导入两次BrosweModule的错误。在我的本地构建中,我已根据错误消息的建议将主要组件BrowseModule导入更改为CommonModule,并且它可以正常工作。
但是,在将其上传到netlify时,我无法让它在生产中工作。
我尝试过: 强制git添加node_modules / angular2-image-gallery文件夹并从package.json中删除它,因此netlify不会安装它并使用我修改过的文件夹。
在git push之后部署成功但同样的错误仍然存在。怎么样?我意识到它使用旧的依赖项,因此错误保持不变。
因此,我创建了另一个网站并开始使用相同的存储库进行部署,并且构建失败。实际上,它编译了所有内容,一旦编译它就会出现以下错误:
> /opt/build/repo/src/app/gallery/gallery.module.ts(8,42)中的错误: 找不到模块'angular2-image-gallery'。
有很多与此模块相关的错误未找到。但它位于node_modules文件夹中。我该怎么办?
先谢谢了。
答案 0 :(得分:3)
注意:我为Netlify工作。
This article描述了我们的构建过程。
您看到的行为表明,如果我们找到npm install
,我们会自动运行package.json
,但您可能缺少的是我们在您的构建开始之前运行它,我们会只有重新运行(如果文件的校验和发生变化,则代替使用上次运行输出的缓存副本)。
有些需要做一些挑剔的安装技巧的人使用npm install package-name -g ; npm build
之类的东西作为构建命令,但我认为这不会帮助你安装修改后的软件包,除非你&# 39;在npm重新发表。
我认为这不是正确的解决方案 - 我认为修复双重导入是一种出色的解决方案,但我对此没有任何建议 - 但这是我们添加的最佳方法从您的仓库到正确的位置的包裹,所以它的工作原理。请注意,您将负责确保在package.json中明确列出所有该程序包的依赖项 ,以便为您安装它们。就像我说的,这不是正确的方法(正确的方法是你修复导入,我们自动从package.json安装依赖项,而不需要你维护列表),但这是一种方式。
为此,您可以尝试将模块复制到节点目录中,而不是使用自己的模块。我们将节点依赖项存储在/ opt / cache / build / node_modules中,而不是典型的./node_modules中。
您首先要将此修改后的副本检入您的仓库(听起来已经存在),然后将其复制到该目录中,确保将任何辅助链接/件放入... / bin和node_modules树中的类似目录以及node_modules / X目录中的包本身。我可以在以下构建命令中执行此操作:
cp -R node_modules/X /opt/build/cache/node_modules &&
cp node_modules/bin/X /opt/build/cache/node_modules/bin &&
npm build