我正在構建將存在於AWS Lambda中的REST API。我使用apex來部署它,因爲我正在使用JavaScript實現它,所以我使用webpack和babel來獲得我的ES6 +好吃的東西。我發現了一個與@providesModule
名稱有關的問題,我無法解決此問題。如何突破@providesModule緩存
我剛剛創建了一個新的lambda函數,當我編譯它時,我可以從輸出中看到一個模塊找不到 - 但另一個可以。以下是文件系統的草圖:
functions
├─ database.js @providesModule Database -- this works
├─ configuration.js @providesModule MyConfig -- this does not work
├── entity-post
├── index.js imports both 'Database' & 'MyConfig'
當我編譯拉姆達,輸出指示MyConfig
依賴不能得到解決,但Database
可能。我試過用死簡單的代碼替換configuration.js
的內容,以防在解析失敗時出現基本的分析錯誤;沒有運氣。我應該補充說,我在同一個項目中有5個使用類似導入的lambda函數,並且它們都很好。
我認爲這是某種緩存問題:模塊解析系統沒有注意到configuration.js
中的@providesModule
。
如何清除緩存?對於這個問題,哪一部分軟件甚至可以處理這些解決方案?我嘗試過在網上尋找,但是不清楚@providesModule
的識別是一個webpack的東西,還是一個babel的東西,還是一個webpack-babel-loader的東西,或者只是一個節點v5的東西。
我已經做了大量的挖掘,包括在線和在我的項目代碼庫中。以下是我所學到的:
幾乎所有在線看到的關於@providesModule
的鏈接都是關於反應或反應原生項目。這是因爲Facebook的工具 - 特別是HasteMap(我認爲)是反應原生包裝套件的一部分 - 明確增加了對@providesModule
的支持。我的項目既沒有反應,也沒有反應,並且在構建過程中沒有使用任何Facebook工具。我的項目使用webpack v1.14和babel v6.22來構建源代碼。
我發現了錯誤信息的WebPack的源代碼中,在./node_modules/webpack/lib/dependencies/WebpackMissingModule.js
:
exports.moduleCode = function(request) {
return "var e = new Error(" + JSON.stringify("Cannot find module \"" + request + "\"") + "); " +
"e.code = 'MODULE_NOT_FOUND'; " +
"throw e;";
};
的WebPack似乎對以這種方式聲明模塊名稱腳本的一個術語:「標記模塊」。 webpack源代碼中有幾個腳本處理帶標籤的模塊,但我無法確定識別模塊中標籤的代碼。我的假設是問題存在於填充模塊註冊表的系統部分,並且我發現的標記模塊代碼似乎都與訪問(已填充的)註冊表中的那些模塊有關。
很難在webpack的源代碼中進一步追蹤這些內容,這很可理解,並且分佈在bajillion文件中。
任何幫助解決此問題的幫助,或鏈接到相關文檔或框架代碼,顯示如何處理@providesModule
,讚賞。我想了解爲什麼我的新模塊沒有解決,所以我可以解決這個問題。如果我的緩存理論不在基地,那很好。
我假設你正在使用[fbjs](https://www.npmjs.com/package/fbjs)。我對嗎? –
@fumi_hwh不是。 「我的項目既沒有反應也沒有反應,並且在構建過程中沒有使用任何Facebook工具。」沒有找到結果。 -iname「* fbjs *」'。 – Tom
然後我不明白你如何使用'@ providesModule'。也許問題是爲什麼'import'Database''工作。 –