ОШИБКА в renderer.js от UglifyJs Неожиданный токен punc «(»

Версия: вебпак 2.3.3

Всем привет

Я пытаюсь создать свое первое приложение Electron, используя Vuejs. Кажется, все идет отлично, пока я не пришел упаковать приложение.

Когда я запускаю npm run dev, все работает нормально.

Однако, когда я запускаю npm build:darwin, я получаю следующую ошибку

ERROR in renderer.js from UglifyJs Unexpected token punc «(», expected punc «:» [renderer.js:26813,14]

Однако компиляция заканчивается, когда я запускаю приложение, я получаю белый экран смерти.

Из того, что я прочитал, это может быть связано с тем, что Uglifyjs не компилирует ES6, но вы можете преодолеть это, указав следующее в файле .babelrc.

"renderer": {
  "presets": [
    ["es2015", { "modules": false }],
    "stage-0"
  ]
}

Я понятия не имею, как это отладить. Любая помощь будет принята с благодарностью.

Спасибо

Генерируемый файл debug.log...

0 info it worked if it ends with ok
1 verbose cli [ '/usr/local/Cellar/node/7.9.0/bin/node',
1 verbose cli   '/usr/local/bin/npm',
1 verbose cli   'run',
1 verbose cli   'pack' ]
2 info using [email protected]
3 info using [email protected]
4 verbose run-script [ 'prepack', 'pack', 'postpack' ]
5 info lifecycle [email protected]~prepack: [email protected]
6 silly lifecycle [email protected]~prepack: no script for prepack, continuing
7 info lifecycle [email protected]~pack: [email protected]
8 verbose lifecycle [email protected]~pack: unsafe-perm in lifecycle true
9 verbose lifecycle [email protected]~pack: PATH: /usr/local/lib/node_modules/npm/bin/node-gyp-bin:/Users/admin/Code/electron/formbuff/node_modules/.bin:/Users/admin/Code/electron/formbuff/node_modules/.bin:/Users/admin/.config/yarn/link/node_modules/.bin:/Users/admin/Code/electron/formbuff/node_modules/.bin:/Users/admin/.config/yarn/link/    node_modules/.bin:/usr/local/Cellar/yarn/0.23.2/libexec/bin/node-gyp-bin:/Users/admin/.rbenv/shims:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/admin/.composer/vendor/bin:/Users/admin/go/bin
10 verbose lifecycle [email protected]~pack: CWD: /Users/admin/Code/electron/formbuff
11 silly lifecycle [email protected]~pack: Args: [ '-c', 'npm run pack:main && npm run pack:renderer' ]
12 silly lifecycle [email protected]~pack: Returned: code: 2  signal: null
13 info lifecycle [email protected]~pack: Failed to exec pack script
14 verbose stack Error: [email protected] pack: `npm run pack:main && npm run pack:renderer`
14 verbose stack Exit status 2
14 verbose stack     at EventEmitter.<anonymous> (/usr/local/lib/node_modules/npm/lib/utils/lifecycle.js:279:16)
14 verbose stack     at emitTwo (events.js:106:13)
14 verbose stack     at EventEmitter.emit (events.js:194:7)
14 verbose stack     at ChildProcess.<anonymous> (/usr/local/lib/node_modules/npm/lib/utils/spawn.js:40:14)
14 verbose stack     at emitTwo (events.js:106:13)
14 verbose stack     at ChildProcess.emit (events.js:194:7)
14 verbose stack     at maybeClose (internal/child_process.js:899:16)
14 verbose stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:226:5)
15 verbose pkgid [email protected]
16 verbose cwd /Users/admin/Code/electron/formbuff
17 error Darwin 16.5.0
18 error argv "/usr/local/Cellar/node/7.9.0/bin/node" "/usr/local/bin/npm" "run" "pack"
19 error node v7.9.0
20 error npm  v4.2.0
21 error code ELIFECYCLE
22 error errno 2
23 error [email protected] pack: `npm run pack:main && npm run pack:renderer`
23 error Exit status 2
24 error Failed at the [email protected] pack script 'npm run pack:main && npm run pack:renderer'.
24 error Make sure you have the latest version of node.js and npm installed.
24 error If you do, this is most likely a problem with the FormBuff package,
24 error not with npm itself.
24 error Tell the author that this fails on your system:
24 error     npm run pack:main && npm run pack:renderer
24 error You can get information on how to open an issue for this project with:
24 error     npm bugs FormBuff
24 error Or if that isn't available, you can get their info via:
24 error     npm owner ls FormBuff
24 error There is likely additional logging output above.
25 verbose exit [ 2, true ]

person bencarter78    schedule 24.04.2017    source источник
comment
Зачем вообще webpack в электронном приложении? Вы можете использовать электронную компиляцию и автоматически собрать все ваши отдельные файловые компоненты (если вы их используете). github.com/electron/electron-compile   -  person Bert    schedule 25.04.2017
comment
@BertEvans, если честно, я погуглил какой-то шаблон для электрона и vuejs и нашел это - simulatedgreg.gitbooks .io/electron-vue/en Я создал с его помощью еще несколько вещей (хотя и небольшие приложения), и у меня не было проблем. Я посмотрю вашу ссылку, хотя, выглядит хорошо! Спасибо!   -  person bencarter78    schedule 25.04.2017


Ответы (2)


Борюсь с похожей проблемой. В этом была хитрость https://github.com/SimulatedGREG/electron-vue/issues/ 200

person NMathar    schedule 29.04.2017

Вы можете попробовать установить эту версию uglify, она называется uglify-es и это:

Парсер JavaScript, менеджер/компрессор и набор инструментов Beautifier для ES6+

ссылка npm на uglify-es

В моем случае я установил плагин babel для решения этой проблемы. Если вы хотите попробовать, вы должны сделать это:

Добавьте это в свой package.json

"babel-core": "latest",
"babel-loader": "latest",
"babel-plugin-transform-async-to-generator": "latest",
"babel-plugin-transform-runtime": "latest",
"babel-preset-es2015": "latest",
"babel-runtime": "latest"

Настройте свой webpack.config файл как (например, это мой):

const path = require('path')
const webpack = require('webpack')

module.exports = {
    entry: './src/main.js',
    output: {
        path: path.resolve(__dirname, './dist'),
        publicPath: '/dist/',
        filename: 'build.js'
    },
    module: {
        rules: [
            {
                test: /\.vue$/,
                loader: 'vue-loader'
            },
            {
                test: /\.js$/,
                loader: 'babel-loader',
                exclude: /node_modules/
            },
            {
                test: /\.(png|jpg|gif|svg)$/,
                loader: 'file-loader',
                query: {
                    name: '[name].[ext]?[hash]'
                }
            },
            {
                test: /\.scss$/,
                use: ['style-loader', 'css-loader', 'sass-loader']
            }
        ]
    }
}

if (process.env.NODE_ENV === 'production') {
    module.exports.devtool = '#source-map'
    module.exports.plugins = (module.exports.plugins || []).concat([
        new webpack.optimize.UglifyJsPlugin({ sourceMap: true, compress: { warnings: false }})
    ])
}

Настройте свой файл .babelrc следующим образом:

{
    "presets": ["es2015"],
    "plugins": ["transform-runtime", "transform-async-to-generator"]
}

Надеюсь, поможет :)

person Adi Azarya    schedule 13.10.2017