2017-03-07 89 views
1

我試圖將舊的JavaScript庫轉換爲ES6兼容模塊。 庫正在tracking.js(https://github.com/eduardolundgren/tracking.js/blob/master/build/tracking.js),但我所有的結果都以:Cannot read property 'xxx' of undefined將舊的JavaScript代碼轉換爲ES6模塊

有沒有簡單的方法來使用這樣的模塊?我想創建https://trackingjs.com/docs.html#step-2

更新

只是基本的例子,因爲有更多的代碼的請求。讓我帶的非工作的例子之一(Vue.js組件的一部分):

import tracking from 'tracking'; 

export default { 
    created() { 
    const colors = new tracking.ColorTracker(['magenta', 'cyan', 'yellow']); 
    } 
}; 

,誤差TypeError: _tracking2.default.ColorTracker is not a constructor

+0

但是,把一些代碼,更多地解釋 – pmirnd

+0

@pmirnd在這裏。儘管如此,它是完全錯誤的,但我不知道該如何開始:( –

+1

通常這將是模塊加載器的工作,例如webpack和SystemJS可以選擇使用將腳本添加到全局範圍的腳本(如跟蹤.js確實)你用什麼來加載ES6模塊? – user3432422

回答

0

您應該使用exports-loader,沒有圖書館的修改是必要的,加載器會在全球範圍內的變量,例如:

import * as tracking from 'exports-loader?tracking!tracking'; 

出口裝載機需要知道如何訪問模塊上的全球範圍內(tracking.js自身分配給window.tracking)。這裏告訴它使用帶有參數tracking(在查詢問號之後)的exports-loader加載模塊tracking(在解釋標記之後)。

+1

修改語法('import * as'tracking from'exports-loader?tracking!tracking';'),但它正在工作 –

+0

嗯,我忘記了,謝謝。更新回答。 – user3432422

+0

問題仍然存在,但是,我們這些人在所有現代瀏覽器中使用原生模塊支持,除了即將登陸的chrome。那麼我們該如何做:按照現有的庫到es6模塊?可能構建某種包裝? – backspaces