2017-10-05 68 views

回答

1

糟糕,抱歉,這是我的錯,但我相信這是值得努力提供我自己的答案,以便其他人可能會遇到同樣的問題,他們可以得到一個提示!

/shared中的代碼文件擴展名未重命名爲.mjs !!!!!

因此,如果您發現此問題,應檢查目標模塊中是否存在導出,或者導入的模塊是否具有邁克爾傑克遜文件擴展名(.mjs)。

這是問題所在。它一路支持alisaes!

+0

這是否意味着目標文件正在與Babel進行處理或您的意思?或者是'.js'文件中的ES6導入語法?這不會拋出語法錯誤? – loganfsmyth

+0

@loganfsmyth不再,我正在使用'--experimental-modules'。它是Node的原生ES2015模塊。 –

+0

@loganfsmyth是的,你知道我使用的是Babel,但我切換到'--experimental-modules',我的錯誤是我將所有文件擴展名重命名爲'.mjs',但是我忘了在依賴項目中這樣做,所以我正在加載ES模塊的CJS模塊。 –

0

您用於別名的語法是正確的 - 所以我會假設實驗ES模塊加載不支持使用別名導入特定導出。

你可以嘗試加載用別名全部出口,雖然:

import * as rabbitmq from "rabbitmq"; 

export const createChannelAsync =() => rabbitmq.createChannelAsync(createConnectionAsync); 

或者你可以嘗試,如果出口的語法支持別名。

export { name1 as default, … }; 

有關語法的進一步信息,請參閱https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/importhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/export

+1

看起來是這樣。這裏是[提交](https://github.com/nodejs/node/commit/c8a389e19f172edbada83f59944cad7cc802d9d5),它有'import *'和'import default'的測試用例,但是我沒有看到'import {x as y }'這大概支持了這個還沒有實現的假設 – CodingIntrigue

+0

看到我自己的答案,無論如何感謝你的努力!是的,一個別名通配符導入將是解決方法。 –

相關問題