我如何使用npm链接Heroku?

juzqafwq  于 2023-01-17  发布在  其他
关注(0)|答案(2)|浏览(118)

我正在使用此处所述的npm链接
http://npmjs.org/doc/link.html
在本地,一切都很完美,当我部署到Heroku时,我收到了错误消息

Error: Cannot find module '...'

我怎样才能让这个和Heroku一起工作?

uqzxnwby

uqzxnwby1#

我希望有一个优雅的解决方案(这会让我的生活轻松很多)。你的定制包是通过npm link符号链接到node_modules的,但是git doesn't follow symbolic links nowadays。所以当你git push到Heroku的时候,没有办法让你的定制包沿着去。
但是,请注意,根据我的实验,Heroku会荣誉你推送的任何node_modules,而不是尝试从网络上安装它们。它本质上只是运行npm install --production。也许直接到你的包的开发源代码的硬链接会起作用,但我不确定Git是否会很好地发挥作用。使用风险自担!
编辑:如果你想知道Heroku到底做了什么,it's all open source
理想的情况是,如果软件包是开源的,那么就把它们放到NPM本身上,这是非常轻松和自动的。

k5hmc34c

k5hmc34c2#

如果您在GitHub(或BitBucket)上托管私有模块,可以将git repo作为依赖项添加到package.json中。

"dependencies": {
  // ... all your deps
  "my_private_module": "git+ssh://git@github.com:my-username/my-private-module.git"
}

但是,您需要授予Heroku读取您的repo的权限(假设它是私有的--这是问题的关键)。请查看this answer,以获得一组详细的说明,说明如何使用Github执行此操作。This可能对Bitbucket有所帮助。
我发现这样做会增加构建时间,这对我来说是值得的。

相关问题