Webpack config при разработке расширений Chrome

Имеется код с примера работы с Storage (API Chrome extension) - background.js

const storageCache = {};
// Asynchronously retrieve data from storage.sync, then cache it.
const initStorageCache = getAllStorageSyncData().then(items => {
    // Copy the data retrieved from storage into storageCache.
    Object.assign(storageCache, items);
});

chrome.action.onClicked.addListener(async (tab) => {
    try {
        await initStorageCache;
    } catch (e) {
        // Handle error that occurred during storage initialization.
    }
    // Normal action handler logic.
});

// Reads all data out of storage.sync and exposes it via a promise.
//
// Note: Once the Storage API gains promise support, this function
// can be greatly simplified.
function getAllStorageSyncData() {
    // Immediately return a promise and start asynchronous work
    return new Promise((resolve, reject) => {
        // Asynchronously fetch all data from storage.sync.
        chrome.storage.sync.get(null, (items) => {
            // Pass any observed errors down the promise chain.
            if (chrome.runtime.lastError) {
                return reject(chrome.runtime.lastError);
            }
            // Pass the data retrieved from storage down the promise chain.
            resolve(items);
        });
    });
}

Конфиг webpack ( "babel-core": "^6.17.0", "babel-loader": "^6.2.5", "babel-preset-es2015": "^6.16.0" )

module: {
        loaders: [
            {
                test: /\.js$/,
                loader: 'babel',
                exclude: /node_modules/,
                query: {
                    presets: ['es2015']
                }
            }
        ]
    }

При сборке выкидывает ошибку

ERROR in ./src/js/background.js
Module parse failed: D:\chrome_ext\storage_test\node_modules\babel-loader\lib\index.js?{"presets":["es2015"]}!D:\chrome_ext\storage_test\src\js\background.js Unexpected token (28:42
)
You may need an appropriate loader to handle this file type.
    SyntaxError: Unexpected token (28:42)
at Parser.pp$4.raise (D:\chrome_ext\storage_test\node_modules\acorn\dist\acorn.js:2221:15)
at Parser.pp.unexpected (D:\chrome_ext\storage_test\node_modules\acorn\dist\acorn.js:603:10)
at Parser.pp.expect (D:\chrome_ext\storage_test\node_modules\acorn\dist\acorn.js:597:28)
at Parser.pp$3.parseExprList (D:\chrome_ext\storage_test\node_modules\acorn\dist\acorn.js:2152:16)
at Parser.pp$3.parseSubscripts (D:\chrome_ext\storage_test\node_modules\acorn\dist\acorn.js:1741:35)
at Parser.pp$3.parseExprSubscripts (D:\chrome_ext\storage_test\node_modules\acorn\dist\acorn.js:1718:17)
at Parser.pp$3.parseMaybeUnary (D:\chrome_ext\storage_test\node_modules\acorn\dist\acorn.js:1692:19)
at Parser.pp$3.parseExprOps (D:\chrome_ext\storage_test\node_modules\acorn\dist\acorn.js:1637:21)
at Parser.pp$3.parseMaybeConditional (D:\chrome_ext\storage_test\node_modules\acorn\dist\acorn.js:1620:21)
at Parser.pp$3.parseMaybeAssign (D:\chrome_ext\storage_test\node_modules\acorn\dist\acorn.js:1597:21)
at Parser.pp$3.parseExpression (D:\chrome_ext\storage_test\node_modules\acorn\dist\acorn.js:1573:21)
at Parser.pp$1.parseStatement (D:\chrome_ext\storage_test\node_modules\acorn\dist\acorn.js:727:47)
at Parser.pp$1.parseTopLevel (D:\chrome_ext\storage_test\node_modules\acorn\dist\acorn.js:638:25)
at Parser.parse (D:\chrome_ext\storage_test\node_modules\acorn\dist\acorn.js:516:17)
at Object.parse (D:\chrome_ext\storage_test\node_modules\acorn\dist\acorn.js:3098:39)
at Parser.parse (D:\chrome_ext\storage_test\node_modules\webpack\lib\Parser.js:902:15)
at NormalModule.<anonymous> (D:\chrome_ext\storage_test\node_modules\webpack\lib\NormalModule.js:104:16)
at NormalModule.onModuleBuild (D:\chrome_ext\storage_test\node_modules\webpack-core\lib\NormalModuleMixin.js:310:10)
at nextLoader (D:\chrome_ext\storage_test\node_modules\webpack-core\lib\NormalModuleMixin.js:275:25)
at D:\chrome_ext\storage_test\node_modules\webpack-core\lib\NormalModuleMixin.js:292:15
at Object.context.callback (D:\chrome_ext\storage_test\node_modules\webpack-core\lib\NormalModuleMixin.js:148:14)
at Object.module.exports (D:\chrome_ext\storage_test\node_modules\babel-loader\lib\index.js:172:8)
at WEBPACK_CORE_LOADER_EXECUTION (D:\chrome_ext\storage_test\node_modules\webpack-core\lib\NormalModuleMixin.js:155:71)
at runSyncOrAsync (D:\chrome_ext\storage_test\node_modules\webpack-core\lib\NormalModuleMixin.js:155:93)
at nextLoader (D:\chrome_ext\storage_test\node_modules\webpack-core\lib\NormalModuleMixin.js:290:3)
at D:\chrome_ext\storage_test\node_modules\webpack-core\lib\NormalModuleMixin.js:259:5
at Storage.finished (D:\chrome_ext\storage_test\node_modules\enhanced-resolve\lib\CachedInputFileSystem.js:38:16)
at D:\chrome_ext\storage_test\node_modules\graceful-fs\graceful-fs.js:123:16
at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:511:3)

В чем может быть проблема


Ответы (0 шт):