如何强制应用程序引擎上传node_modules

在我的项目中,我们正在使用与打字稿的nodejs谷歌云应用程序引擎应用程序开发。 我们有自己的构build机制,将ts文件编译为javascript,然后将它们收集到一个完整的可运行包中,以便我们不希望在google云上转发安装依赖关系,而是要将node_modules中的所有节点包上传到谷歌云。

但似乎谷歌云将始终忽略node_modules文件夹,并在部署过程中运行npm安装。 即使我试图从app.yaml中删除'skip_files: – ^ node_modules $',它不起作用,谷歌云总是会自行安装包。

有没有人有这个与node_modules一起部署节点应用程序的想法? 谢谢。

我观察到同样的问题。

我的解决方法是在部署之前将node_modules_hack/重命名为node_modules_hack/ 。 这可以防止AppEngine将其删除。

我将其恢复到安装时的原始名称,使用以下(部分) package.json文件:

  "__comments": [ "TODO: Remove node_modules_hack once AppEngine stops stripping node_modules/" ], "scripts": { "install": "mv -fn node_modules_hack node_modules", "start": "node server.js" }, 

你可以通过查看它生成的Docker镜像来确认AppEngine node_modules/了你的node_modules/ 。 你可以在图像页面find它。 他们给你一个命令行,你可以在云控制台上运行来获取它。 然后你可以运行docker run <image_name> ls来查看你的目录结构。 该映像是在npm install之后创build的,因此,一旦使用了上述解决方法,就会看到您的node_modules/存在。