2016-10-27 9 views
8

के साथ विफल रहा है, मुझे उत्पादन में एम्बर ऐप बनाने की कोशिश करते समय अब ​​2 सप्ताह के लिए यह त्रुटि मिली है। देव पर्यावरण में इसे बनाना ठीक काम करता है। मुझे यह भी एहसास हुआ कि एम्बर-क्ली-बिल्ड में minifyJs को अक्षम करने से त्रुटि रोकती है लेकिन फिर, ऐप ब्राउज़र में लोड होने पर फंस जाता है, और कंसोल में, मुझे एक और त्रुटि दिखाई देती है: "एम्बर-रिज़ॉल्वर आयात नहीं कर सका"।ब्रोकोली प्लगइन: [UglifyWriter]

मेरा अनुमान है कि यह UglifyWriter के परिणामस्वरूप कहीं कुछ कोड समझ नहीं रहा है।

पूर्ण त्रुटि है:

बिल्ड विफल। फ़ाइल: संपत्ति/vendor.js (95,443: 4) ब्रोकोली प्लगइन: [UglifyWriter] के साथ विफल: नई JS_Parse_Error ((/ घर/larisoft/दृश्यपटल/node_modules/सूरत बिगाड़ना-js/उपकरण/नोड पर eval पर त्रुटि .js: 1: 1),: 1545: UglifyWriter.Plugin पर (/home/larisoft/frontend/node_modules/broccoli-plugin/index.js : 18)

at js_error (eval at <anonymous> (/home/larisoft/frontend/node_modules/uglify-js/tools/node.js:1:1), <anonymous>:1553:11) 

at croak (eval at <anonymous> (/home/larisoft/frontend/node_modules/uglify-js/tools/node.js:1:1), <anonymous>:2092:9) 

at token_error (eval at <anonymous> (/home/larisoft/frontend/node_modules/uglify-js/tools/node.js:1:1), <anonymous>:2100:9) 

at unexpected (eval at <anonymous> (/home/larisoft/frontend/node_modules/uglify-js/tools/node.js:1:1), <anonymous>:2106:9) 

at semicolon (eval at <anonymous> (/home/larisoft/frontend/node_modules/uglify-js/tools/node.js:1:1), <anonymous>:2126:56) 

at simple_statement (eval at <anonymous> (/home/larisoft/frontend/node_modules/uglify-js/tools/node.js:1:1), <anonymous>:2317:73) 

at eval (eval at <anonymous> (/home/larisoft/frontend/node_modules/uglify-js/tools/node.js:1:1), <anonymous>:2186:19) 

at eval (eval at <anonymous> (/home/larisoft/frontend/node_modules/uglify-js/tools/node.js:1:1), <anonymous>:2139:24) 

at block_ (eval at <anonymous> (/home/larisoft/frontend/node_modules/uglify-js/tools/node.js:1:1), <anonymous>:2432:20) 

ब्रोकोली प्लगइन पर instantiated किया गया था: 7:31)

at new UglifyWriter (/home/larisoft/frontend/node_modules/broccoli-uglify-sourcemap/index.js:25:10) 

at UglifyWriter (/home/larisoft/frontend/node_modules/broccoli-uglify-sourcemap/index.js:20:12) 

at Class.postprocessTree (/home/larisoft/frontend/node_modules/ember-cli-uglify/index.js:15:50) 

at /usr/local/lib/node_modules/ember-cli/lib/broccoli/ember-app.js:543:27 
at Array.forEach (native) 

at EmberApp.addonPostprocessTree (/usr/local/lib/node_modules/ember-cli/lib/broccoli/ember-app.js:541:23) 

at EmberApp.toTree (/usr/local/lib/node_modules/ember-cli/lib/broccoli/ember-app.js:1667:15) 

at module.exports (/home/larisoft/frontend/ember-cli-build.js:37:16) 

at Class.setupBroccoliBuilder (/usr/local/lib/node_modules/ember-cli/lib/models/builder.js:70:19) 

मेरी package.json

{ 
"name": "hospitalrun", 
"version": "0.9.12", 
"description": "Ember front end for HospitalRun", 
"homepage": "http://curacel.co", 
"directories": { 
"doc": "doc", 
"test": "tests" 
}, 
"scripts": { 
"build": "./script/build", 
"start": "./script/server", 
"test": "snyk test && ./script/test" 
}, 
"repository": { 
"type": "git", 
"url": "[email protected]:HospitalRun/hospitalrun-frontend" 
}, 
"engines": { 
"node": ">= 0.10.0" 
}, 
"author": "John Kleinschmidt", 
"contributors": [ 
"Joel Worrall", 
"Joel Glovier" 
], 
"license": "GPL-3.0", 
"devDependencies": { 
"body-parser": "^1.14.2", 
"broccoli-asset-rev": "^2.4.1", 
"broccoli-export-text": "0.0.2", 
"broccoli-funnel": "^1.0.1", 
"broccoli-manifest": "0.0.7", 
"broccoli-merge-trees": "^1.0.0", 
"broccoli-serviceworker": "0.1.0", 
"ember-ajax": "2.3.2", 
"ember-cli": "^2.4.1", 
"ember-cli-active-link-wrapper": "0.2.0", 
"ember-cli-app-version": "^1.0.0", 
"ember-cli-content-security-policy": "0.5.0", 
"ember-cli-dependency-checker": "^1.2.0", 
"ember-cli-deprecation-workflow": "0.2.2", 
"ember-cli-fake-server": "0.3.1", 
"ember-cli-htmlbars": "^1.0.7", 
"ember-cli-htmlbars-inline-precompile": "^0.3.1", 
"ember-cli-inject-live-reload": "^1.3.1", 
"ember-cli-qunit": "^2.0.0", 
"ember-cli-release": "1.0.0-beta.1", 
"ember-cli-sass": "^5.2.1", 
"ember-cli-scss-lint": "1.0.0", 
"ember-cli-sri": "^2.1.0", 
"ember-cli-uglify": "^1.2.0", 
"ember-data": "^2.4.0", 
"ember-disable-proxy-controllers": "^1.0.1", 
"ember-export-application-global": "^1.0.4", 
"ember-font-awesome": "2.1.1", 
"ember-i18n": "4.2.1", 
"ember-load-initializers": "^0.5.0", 
"ember-pouch": "^3.1.0", 
"ember-rapid-forms": "1.0.0-beta4", 
"ember-resolver": "^2.0.3", 
"ember-select-list": "0.9.5", 
"ember-simple-auth": "^1.1.0-beta.3", 
"ember-simple-auth-registration": "1.0.2", 
"ember-suave": "2.0.1", 
"ember-truth-helpers": "1.2.0", 
"ember-validations": "2.0.0-alpha.4", 
"express": "^4.8.5", 
"glob": "^7.0.0", 
"hospitalrun-dblisteners": "0.9.2", 
"hospitalrun-server-routes": "0.9.7", 
"loader.js": "^4.0.7", 
"nano": "6.2.0", 
"request": "2.72.0" 
}, 
"dependencies": { 
"ember-cli-babel": "^5.1.5", 
"ember-cli-uglify": "^1.2.0", 
"ember-radio-buttons": "^4.0.1", 
"ember-resolver": "^2.1.0", 
"snyk": "^1.14.1", 
"sw-toolbox": "^3.1.1", 
"uglify-js": "^2.7.4" 
}, 
"ember-addon": { 
"paths": [ 
    "lib/pouch-fixtures" 
] 
} 

}

मेरे एंबर-CLI-निर्माण:

/* global require, module */ 
var EmberApp = require('ember-cli/lib/broccoli/ember-app'); 
module.exports = function(defaults) { 
var app = new EmberApp(defaults, { 
    // Add options here 
}); 
// Use `app.import` to add additional libraries to the generated 
// output files. 
// 
// If you need to use different assets in different 
// environments, specify an object as the first parameter. That 
// object's keys should be the environment name and the values 
// should be the asset to use in that environment. 
// 
// If the library that you are including contains AMD or ES6 
// modules that you would like to import into your application 
// please specify an object with the list of modules as keys 
// along with the exports of each module as its value. 
app.import('vendor/pouchdb-list/pouchdb-list.js'); 
app.import('bower_components/node-uuid/uuid.js'); 
app.import('bower_components/bootstrap/dist/js/bootstrap.js'); 
app.import('bower_components/JsBarcode/CODE128.js'); 
app.import('bower_components/JsBarcode/JsBarcode.js'); 
app.import('vendor/dymo/DYMO.Label.Framework.1.2.6.js'); 
app.import('bower_components/moment/moment.js'); 
app.import('bower_components/typeahead.js/dist/typeahead.bundle.js'); 
app.import('bower_components/pikaday/pikaday.js'); 
app.import('bower_components/filer.js/src/filer.js'); 
app.import('bower_components/idb.filesystem/src/idb.filesystem.js'); 
app.import('bower_components/pikaday/css/pikaday.css'); 
app.import('vendor/octicons/octicons/octicons.css'); 

app.import('bower_components/pouchdb-load/dist/pouchdb.load.js'); 
app.import('bower_components/pouchdb/dist/pouchdb.memory.js'); 

return app.toTree(); 

};

उत्तर

8

यह uglify.js की तरह लगता है ES6 फाइलों के साथ कुछ समस्या है: https://forum.ionicframework.com/t/uglifyjs-fails-with-js-parse-error-error-but-no-stack-trace/66094। मेरे मामले में यह एक पुस्तकालय (फ़ोल्ड-टू-एएससीआई) को ईएस 5 संस्करण में डाउनग्रेड करने के लिए पर्याप्त था।

दुर्भाग्य से, एक त्रुटि संदेश बहुत उपयोगी नहीं है, इसलिए समस्याग्रस्त फ़ाइल ढूंढना अनावश्यक रूप से कठिन है। यह कहना मुश्किल है कि कौन सी फ़ाइल आपके मामले में त्रुटि का कारण बनती है, लेकिन मैं कम से कम कह सकता हूं कि मेरी मदद किसने की। समारोह node_modules की

function js_error(message, filename, line, col, pos) { 
    console.log(`message: ${message}/filename: ${filename}/line: ${line}`); 
    throw new JS_Parse_Error(message, filename, line, col, pos); 
}; 

में js_error/सूरत बिगाड़ना-js/lib/parse.js (लाइन मेरे मामले में 205),:

मैं मैन्युअल रूप से एक लॉग (मदद से http://discuss.emberjs.com/t/debugging-failures-in-uglifyjs/7390/6 से) डाल एक तो

message: SyntaxError: Unexpected token: name (ASCIIFolder)/file: 0/line: 64911/position: 2070881 

, पाठ "ASCIIFolder" पर पथ खोज में खोज के साथ, मैं था: और संदेश है कि वास्तव में मददगार था मिल गया समस्याग्रस्त फाइलों का पता लगाने के लिए खून।

भी यह करने के लिए आवश्यक हो सकता है 'साफ़' NPM और बोवर पैकेज (https://emberigniter.com/update-latest-ember-data-cli/) की स्थापित:

npm cache clean && bower cache clean 
rm -rf node_modules bower_components dist tmp 
npm install 
bower install 

वैकल्पिक रूप से आप पूरी तरह से निष्क्रिय कर सकते हैं विक्रेता की कम करने से।js [https://ember-cli.com/asset-compilation#exclude-from-minification] (हालांकि यह नहीं है सबसे बड़ी समाधान) के साथ:

// ember-cli-build.js 
var EmberApp = require('ember-cli/lib/broccoli/ember-app'); 
module.exports = function(defaults) { 
    var app = new EmberApp(defaults, { 
    minifyJS: { 
     options: { 
     exclude: ["**/vendor.js"] 
     } 
    } 
    }); 

    //... 
    return app.toTree(); 
}; 

जो बताता है ब्रोकोली-रूप बिगाड़ना-sourcemap vendor.js और इसलिए, ऐसा होने से एक त्रुटि रोकने चाहिए अनदेखी करने के लिए।

3

अद्यतन:

आप IE9 ब्राउज़र का समर्थन नहीं कर रहे हैं, तो आप minification के लिए [email protected] स्थिर रिलीज उपयोग कर सकते हैं।


uglifyjs नए ES सुविधाओं को कम करने में समस्या है, तो आप ember-cli-babili का उपयोग एंबर-CLI में जावास्क्रिप्ट babili कम करें कर सकते हैं।

npm uninstall --save-dev ember-cli-uglify 
npm install --save-dev ember-cli-babili 

मैं इसे अपने एप्लिकेशन का उपयोग कर रहा। इसका उल्लेख उनके ब्लॉग (http://rwjblue.com/2017/04/21/ember-cli-targets/)

1

मैं ऐसी त्रुटियों से थक गया था, इसलिए मैंने के साथ uglify-js को प्रतिस्थापित किया। yarn और ember-cli:

yarn upgrade [email protected] 
का उपयोग करना
संबंधित मुद्दे