如何将修改后的 angular2 模块上传到生产服务器?
How to upload a modified angular2 module to server in production?
我正在使用 angular2-image-gallery。
关于从 angular 导入两次 BrosweModule,这导致我在生产(也在本地)上出错。在我的本地构建中,我已按照错误消息中的建议将主要组件 BrowseModule 导入更改为 CommonModule,并且它运行良好。
但是,当我将它上传到 netlify 时,我无法让它在生产环境中工作。
我试过强制 git add node_modules/angular2-image-gallery
文件夹并将其从 package.json
中删除,因此 netlify 不会安装它并使用我修改过的那个。
git push
后部署成功,但出现同样的错误。如何?我意识到它使用的是旧的依赖项,所以错误保持不变。
因此,我创建了另一个网站并开始使用相同的存储库进行部署,但构建失败了。实际上,它会编译所有内容,编译后会出现以下错误:
ERROR in /opt/build/repo/src/app/gallery/gallery.module.ts (8,42):
Cannot find module 'angular2-image-gallery'.
有很多与此模块相关的错误没有找到。但它位于 node_modules
文件夹中。我该怎么办?
注意:我在 Netlify 工作。
This article 描述了我们的构建过程。
您看到的行为表明,如果我们找到 package.json
,我们会自动 运行 npm install
,但您可能遗漏的是我们 运行 它在你的构建开始之前,我们只会 re-运行 如果校验和文件更改。
一些需要执行一些挑剔的安装技巧的人使用了类似 npm install package-name -g ; npm build
的构建命令,但我认为除非您重新发布,否则这不会帮助您安装修改后的包它在 npm 上。
我认为这不是正确的解决方案 - 我认为修复双重导入是一个更好的解决方案,但我对此没有任何建议 - 但这是我们从你的回购协议中添加包的最佳方法正确的位置,所以它的工作原理。请注意,您将负责确保该软件包的所有依赖项 都 在您的 package.json 中明确列出,以便为您安装它们。就像我说的那样,这不是执行此操作的正确方法(正确的方法是让您修复导入并让我们按照预期从 package.json 自动安装依赖项,而无需维护列表),但这是一种方法。
为此,您可以尝试将您的模块复制到我们的节点目录中,而不是使用您自己的。我们将节点依赖项存储在 /opt/cache/build/node_modules 而不是典型的 ./node_modules 中。
您首先要将此修改后的副本检入您的存储库(听起来它已经存在),然后将其复制到该目录中,确保将任何辅助 links/pieces 放入 ... /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
我正在使用 angular2-image-gallery。
关于从 angular 导入两次 BrosweModule,这导致我在生产(也在本地)上出错。在我的本地构建中,我已按照错误消息中的建议将主要组件 BrowseModule 导入更改为 CommonModule,并且它运行良好。
但是,当我将它上传到 netlify 时,我无法让它在生产环境中工作。
我试过强制 git add node_modules/angular2-image-gallery
文件夹并将其从 package.json
中删除,因此 netlify 不会安装它并使用我修改过的那个。
git push
后部署成功,但出现同样的错误。如何?我意识到它使用的是旧的依赖项,所以错误保持不变。
因此,我创建了另一个网站并开始使用相同的存储库进行部署,但构建失败了。实际上,它会编译所有内容,编译后会出现以下错误:
ERROR in /opt/build/repo/src/app/gallery/gallery.module.ts (8,42): Cannot find module 'angular2-image-gallery'.
有很多与此模块相关的错误没有找到。但它位于 node_modules
文件夹中。我该怎么办?
注意:我在 Netlify 工作。
This article 描述了我们的构建过程。
您看到的行为表明,如果我们找到 package.json
,我们会自动 运行 npm install
,但您可能遗漏的是我们 运行 它在你的构建开始之前,我们只会 re-运行 如果校验和文件更改。
一些需要执行一些挑剔的安装技巧的人使用了类似 npm install package-name -g ; npm build
的构建命令,但我认为除非您重新发布,否则这不会帮助您安装修改后的包它在 npm 上。
我认为这不是正确的解决方案 - 我认为修复双重导入是一个更好的解决方案,但我对此没有任何建议 - 但这是我们从你的回购协议中添加包的最佳方法正确的位置,所以它的工作原理。请注意,您将负责确保该软件包的所有依赖项 都 在您的 package.json 中明确列出,以便为您安装它们。就像我说的那样,这不是执行此操作的正确方法(正确的方法是让您修复导入并让我们按照预期从 package.json 自动安装依赖项,而无需维护列表),但这是一种方法。
为此,您可以尝试将您的模块复制到我们的节点目录中,而不是使用您自己的。我们将节点依赖项存储在 /opt/cache/build/node_modules 而不是典型的 ./node_modules 中。
您首先要将此修改后的副本检入您的存储库(听起来它已经存在),然后将其复制到该目录中,确保将任何辅助 links/pieces 放入 ... /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