2017-08-15 209 views
2

我有一個項目與[email protected]完美配合。我只是試着將這個項目升級到[email protected],並注意到Popper.js而不是Tether的新依賴。Bootstrap 4,Popper.JS和WebPack - 「導入和導出可能只出現在sourceType:模塊中」

我更新了我的package.json包括[email protected]^1.11.0和更新我的代碼:

window.Tether = require("tether"); 
require("bootstrap"); 

到:

window.Popper = require("popper.js"); 
require("bootstrap"); 

現在我發現了以下錯誤:

./~/popper.js/dist/esm/popper.js 
Module build failed: SyntaxError: 'import' and 'export' may appear only with 'sourceType: module' (2429:0) 
    at Parser.pp$4.raise (/project/node_modules/acorn/dist/acorn.js:2610:13) 
    at Parser.pp$1.parseStatement (/project/node_modules/acorn/dist/acorn.js:782:16) 
    at Parser.pp$1.parseTopLevel (/project/node_modules/acorn/dist/acorn.js:690:23) 
    at Parser.parse (/project/node_modules/acorn/dist/acorn.js:543:15) 
    at parse (/project/node_modules/acorn/dist/acorn.js:3670:37) 
    at module.exports (/project/node_modules/falafel/index.js:22:15) 
    at /project/node_modules/static-module/index.js:30:13 
    at ConcatStream.<anonymous> (/project/node_modules/concat-stream/index.js:36:43) 
    at emitNone (events.js:91:20) 
    at ConcatStream.emit (events.js:185:7) 
@ ./resources/assets/js/common/bootstrap.js 12:16-36 
@ ./resources/assets/js/website/app.js 

我不太熟悉或擅長使用WebPack。它被Laravel 5.4強加給我,所以我一直在爲此而煩惱。我webpack.config.js文件看起來像這樣:

module.exports = { 
    devtool: "source-map", 
    module: { 
    loaders: [ 
     { 
     test: /\.js/, 
     loader: "transform?brfs" 
     } 
    ] 
    } 
} 
+0

它是webpack 1還是2+?如果爲1,則可能需要Babel加載程序來處理ESM構建。或者使用由Popper.js提供的UMD版本 –

回答

6

您必須使用UMD構建它位於popper.js的dist/umd文件夾:(dist/umd/popper.jsdist/umd/popper.min.js

下面的答案幫助我與引導4和波普爾的問題,看看這裏:How to use popper 1.12.0 with bootstrap 4.0 beta

此外,我使用AngularCLI,它使用Webpack。從dist更改爲dist/umd已解決了我的問題。

我希望這會幫助你。

+0

你救了我的命,謝謝! –

6
+0

我對接受哪個答案感到厭倦,因爲你們都給出瞭解決我的問題的「UMD」響應,但是另一個答案更直接地引導我解決問題(參考dist/umd'文件夾),所以我打算接受它,因爲我相信這會對其他人偶然發現更有幫助 – stevendesu

0

您需要使用在節點模塊中提供popper.js文件夾的UMD發行版,並將您的angular-cli.json指向您的popper.js路徑。