2017-08-22 100 views
2

我打算使用webpack將所有.js綁定。 我嘗試了一個非常簡單的例子,如下所示。如何使用webpack導出函數

function test() { 
    console.log('hello'); 
} 

的WebPack配置:

module.exports = [{ 
    { 
    output: { 
     filename: 'test.js', 
     path: __dirname + '/public/javascript/dist' 
    }, 
    entry: [ 
     './public/javascript/test.js' 
    ] 
    } 
] 

代碼來測試:

功能在一個test.js文件捆綁

<html> 
<head></head> 
<body> 

    <script src="./javascript/dist/test.js"></script> 

<script type="text/javascript"> 

window.onload = function() 
{ 
    test(); 
} 

</body> 
</html> 

但我收到以下錯誤:未捕獲ReferenceError:測試未定義。

問題:爲什麼?

[編輯] Reponse is:「export」is missing。 感謝,我更新如下:

代碼出口:

export function Test() { 
    this.t = 1; 

    Test.prototype.toto = function() 
    { 
    console.log('hello') 
    } 
} 

的WebPack的conf:

{ 
output: { 
    filename: 'test.js', 
    path: __dirname + '/public/javascript/dist', 
    library: 'test', 
    libraryTarget: 'window' 
}, 
entry: [ 
    './public/javascript/poc/test.js' 
] 
} 

創建對象,我必須做的:var T =新的考驗。測試(); 這有點沉重......有沒有辦法只需要:var t = new Test(); ?

+0

你確定的WebPack發出你的JS文件?你確定所有的路徑都是正確的嗎?你有沒有檢查控制檯的錯誤?信息太少。 – Sebastian

回答

1

why?

因爲你還沒有從你的入口點,並且默認的WebPack出口任何東西生成UMD格式輸出W/O poluting全局範圍。

您必須首先導出功能

export default function test() { 
    console.log('hello'); 
} 

然後指定你的WebPack配置「庫」和「libraryTarget」。 Docs。例如

output: { 
    filename: 'test.js', 
    path: __dirname + '/public/javascript/dist', 
    library: 'test', 
    libraryTarget: 'window' 
    libraryExport: 'default' 
}, 

這將生成代碼,增加了window.test = _entry_return_.default

+0

使用導出關鍵字不是強制性的與webpack捆綁文件 – Sebastian

+0

更好。我只使用「導出功能測試()...」來使其工作。謝謝 ! – MrFlo