如何将修改后的angular2模块上传到生产中的服务器?

时间:2017-03-26 23:53:42

标签: git angular netlify

我正在使用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文件夹中。我该怎么办?

先谢谢了。

1 个答案:

答案 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