Недавно я начал играть с rollupjs. После настройки всего в соответствии с доступными документами и объединения вещей я получил много ошибок из моих внешних библиотек о неопределенных объектах. Такие ошибки: Cannot read property 'parse' of undefined
исходят от crypto-js. Он жалуется на эту строку в коде: var ciphertext = Base64.parse(openSSLStr)
. Итак, Base64
не определено. У меня есть несколько подобных ошибок из разных внешних библиотек.
Я использую несколько внешних зависимостей: chart.js, crypto-js, мифрил, момент, множественное число.
Все они отлично работают с jspm
. Я решил попробовать свернуть, чтобы ускорить процесс, так как jspm на данный момент очень медленный. Теперь половина моих внешних зависимостей перестала работать. Я получаю ошибки типа «неопределенные вещи» и «... не функция», поступающие только из внешних библиотек.
Что может быть причиной этого?
Это мой rollup.config.js
import babel from 'rollup-plugin-babel';
import npm from 'rollup-plugin-npm';
import commonjs from 'rollup-plugin-commonjs';
import uglify from 'rollup-plugin-uglify';
export default {
entry: 'app/scripts/application/main.js',
format: 'cjs',
plugins: [
npm({
jsnext: true,
main: true,
}),
babel({
exclude: 'node_modules/**',
presets: [ 'es2015-rollup' ],
}),
commonjs(),
uglify(),
],
dest: 'static/js/application.js',
};
Дайте мне знать, если нужны какие-либо другие подробности.
Спасибо.
ИЗМЕНИТЬ
Я сделал простой тест-репродукцию, объединив те библиотеки, которые вызывают ошибки в моем приложении.
пакет.json
{
"name": "minion",
"private": true,
"babel": {
"presets": [
"es2015-rollup"
]
},
"dependencies": {
"chart.js": "^1.0.2",
"crypto-js": "^3.1.6",
"mithril": "^0.2.2-rc.1",
"moment": "^2.11.1",
"pluralize": "^1.2.1"
},
"devDependencies": {
"babel-preset-es2015-rollup": "^1.1.1",
"rollup-plugin-babel": "^2.3.9",
"rollup-plugin-commonjs": "^2.2.0",
"rollup-plugin-npm": "^1.3.0",
"rollup-plugin-uglify": "^0.1.0"
}
}
rollup.config.js
import babel from 'rollup-plugin-babel';
import npm from 'rollup-plugin-npm';
import commonjs from 'rollup-plugin-commonjs';
import uglify from 'rollup-plugin-uglify';
export default {
entry: 'app/main.js',
format: 'cjs',
plugins: [
npm({
jsnext: true,
main: true,
}),
babel({
exclude: 'node_modules/**',
presets: [ 'es2015-rollup' ],
}),
commonjs(),
//uglify(),
],
dest: 'static/js/app.js',
}
main.js
import Application from './application'
import pluralize from 'pluralize'
var text = Application.run()
console.log(`Testing encryption: ${text}`)
console.log(`Testing pluralization: ${pluralize('person')}`)
приложение.js
import crypt from 'crypto-js'
var Application = {
run() {
var ciphertext = crypt.AES.encrypt('Testing encryption...', 'password')
var bytes = crypt.AES.decrypt(ciphertext.toString(), 'password')
return bytes.toString(crypt.enc.Utf8)
}
}
export default Application
Выполнение вышеуказанного приведет к ошибкам.