2015-10-20 69 views
6

我的本地npm包包含在我的回購庫中(我的整個node_modules包含在我的回購庫中,由於其超過200mb的大小,只有特定的包需要修改以滿足我的需求)。Heroku找不到本地npm包

package.json,本地包的聲明看起來是這樣的:

dependencies : { 
    local_package: "./my_local_package" 
    ... 
} 

npm ERR! enoent ENOENT: no such file or directory, open 
'/app/tmp/cache/my_local_package' 

我不知道的錯誤,如果/app/tmp/cache的地方是我的回購所在,如果它不我應該改變它。不建議

節點V4.2.1,NPM v2.14.7

+0

推到Heroku的前,爲什麼不ü把包的名字呢?你可以保持它與相對本地目錄混帳,但對於Heroku你可以改變和部署它 –

+0

本地依賴包括在git回購當然(否則,我不希望它的工作)。在npm 2.0中支持'package.json'中指定本地依賴的特性,並且在部署到heroku時似乎不起作用的原因是我提出這個問題的確切原因:)。 – evfwcqcg

+0

您是否嘗試禁用緩存? 'heroku config:設置NODE_MODULES_CACHE = false'。你能提供完整的部署日誌嗎? – hassansin

回答

0

添加node_modules與git或將其推到Heroku的。

所以,一個可能的解決辦法是讓你的local_package在一個單獨的混帳回購協議,那麼你可以做以下操作將package.json

dependencies : { local_package: "git+https://example.com/local_package.git" ... }

我覺得這是不是在你的node_modules而忽略所有其它只具有local_package一個更好的解決方案。

1

npm documentation for local paths,你應該這樣定義它:

"dependencies" : { 
    "local_package": "file:./my_local_package" 
    ... 
} 
+0

感謝您指出了這一點。儘管它沒有解決錯誤,但閱讀文檔非常有幫助。我仍然不知道爲什麼這一步是必須的,但是當我在部署腳本中添加'npm i ./local_package --save'時,它會從本地目錄安裝該程序包。 – evfwcqcg