AMcoder - javascript, python, java, html, php, sql

Ինչու՞ է Javascript-ի ձախողումը, երբ փորձում եմ compile.js-ը հանգուցավորել իմ հատուկ dijit թեմայի համար:

Ես հենց նոր իմացա Node.js գործիքը «պակասով» օգտագործելու ունակության մասին՝ անհատական ​​Dojo Dijit թեմա ստեղծելու համար: Ես ներբեռնեցի Node-ը և գլոբալ մակարդակով տեղադրեցի ավելի քիչ նման՝

npm install -g less

այնուհետև թարմացրեց variables.less-ը և մի քանի այլ վիջեթի .less ֆայլեր, այնուհետև գործարկեց compile հրամանը.

node compile.js

«claro» Dijit թեմաների գրացուցակի իմ պատճենից: Ես այն աշխատում եմ Windows7 հարթակից: Ես այն աշխատում եմ CMD պատուհանից, բայց նախկինում այն ​​փորձել էի նաև իմ CYGWIN պատուհանից: Անմիջապես այն ձախողվեց, քանի որ compile.js-ի ճանապարհը դեպի «պակաս» մոդուլը չգտնվեց.

less = require('../../../util/less/lib/less');

այնպես որ ես որոնեցի նոր ներբեռնված հանգույցում և npm թղթապանակներում և գտա, որ երբ ես փոխեցի այս ճանապարհն օգտագործելու պահանջվող զանգը.

less = require('C:/Users/okorng/AppData/Roaming/npm/node_modules/less');

այն ավելի հեռուն գնաց: Այն գտավ «պակաս» մոդուլն այդ վայրում, բայց հետո compile.js-ը չկարողացավ վերլուծել առաջին ֆայլը կանչի ժամանակ.

new(less.Parser)({
    paths: [path.dirname(fname)],
    optimization: options.optimization,
    filename: fname
}).parse(data, function(err, tree){

Որոշ վրիպազերծման console.log() հայտարարություններ տեղադրելուց հետո, և հետո նաև պարզել եմ, թե ինչպես օգտագործել node-debug-ը Chrome բրաուզերի հետ, որպեսզի սկրիպտը կարգաբերվի Chrome-ի մշակողի գործիքի կողմից, ես գտա, որ զանգը դեպի Parser.parse() ֆունկցիան ձախողվում է «ներմուծում» փոփոխականի «չսահմանված» սխալով.

parse: function (str, callback, additionalData) {
        var root, error = null, globalVars, modifyVars, preText = "";

        globalVars = (additionalData && additionalData.globalVars) ? Parser.serializeVars(additionalData.globalVars) + '\n' : '';
        modifyVars = (additionalData && additionalData.modifyVars) ? '\n' + Parser.serializeVars(additionalData.modifyVars) : '';

        if (globalVars || (additionalData && additionalData.banner)) {
            preText = ((additionalData && additionalData.banner) ? additionalData.banner : "") + globalVars;
        imports.contentsIgnoredChars[fileInfo.filename] = preText.length;
        }

        str = str.replace(/\r\n/g, '\n');
        // Remove potential UTF Byte Order Mark
        str = preText + str.replace(/^\uFEFF/, '') + modifyVars;
 --->   imports.contents[fileInfo.filename] = str;

Վահանակին հաղորդված սխալը հետևյալն է.

C:\Users\okorng\AppData\Roaming\npm\node_modules\less\lib\less\parser\parser.js:112
        imports.contents[fileInfo.filename] = str;
               ^
TypeError: Cannot read property 'contents' of undefined
at Object.Parser.parse (C:\Users\okorng\AppData\Roaming\npm\node_modules\less\lib\less\parser\parser.js:112:20)
at C:\COMPASS\URS\trunk\dev\src\IBM\RAD\webapps\CompassThemesURS\WebContent\themes\html\commonurs\dojo\1.9.1\dijit\themes\jelam\compile.js:43:6
at fs.js:272:14
at Object.oncomplete (fs.js:108:15)

և ես տեսնում եմ, որ «ներմուծում» փոփոխականը այն պարամետրերից մեկն է, որը գտնվում է Parser կոնստրուկտորում ավելի քիչ parser.js ֆայլում.

var Parser = function Parser(context, imports, fileInfo) {

և երբ ես դուրս եմ հանում այս կոնստրուկտորների արգումենտների արժեքները, և՛ «ներմուծումը», և՛ «fileInfo»-ն անորոշ են:

Այս Parser կոնստրուկտորը կանչվում է compile.js ֆայլից, որը եկել է Dijit claro թեմայով: Արդյո՞ք compile.js ֆայլը սխալ է: Արդյո՞ք ես բաց եմ թողել մի բան, որը ես պետք է այլ կերպ կարգավորեի մինչև «node compile.js» հրամանը գործարկելը:

Ցանկացած օգնություն մեծապես գնահատելի կլինի: Ես փնտրում էի ցանցում կոմպիլյացիայի նման սխալների համար, բայց մինչ այժմ չեմ գտել որևէ մեկին, ով բացատրի նույն տեսակի խնդիրը: Եթե ​​կա որևէ լրացուցիչ տեղեկություն, որը ես կարող եմ ձեզ տալ, խնդրում եմ տեղեկացնել ինձ:

Նախապես շնորհակալություն,

Գրեգոր

01.02.2015

Պատասխանները:


1

Գտա խնդիրը!

Ավելի շատ որոնումից հետո ես վերջապես գտա նույն տեսակի սխալի մի քանի այլ զեկույցներ հետևյալ հասցեով.

  https://github.com/phiamo/MopaBootstrapBundle/issues/975 
  https://github.com/gruntjs/grunt-contrib-less/issues/224

ինչը հուշում էր, որ նրանք օգտագործում էին «պակաս» մոդուլ, որը չափազանց նոր էր. որ նրանք պետք է իջեցնեին 1.7.5 տարբերակին։ Ես գտա այդ տարբերակը և ներբեռնեցի այն հետևյալից.

  https://www.versioneye.com/nodejs/less/1.7.5 

այնուհետև տեղադրել այն կայքի օգնությամբ՝

  https://docs.npmjs.com/cli/install 

Տեղադրվելուց հետո ես նորից գործարկեցի հրամանը.

  node compile.js

և դա պարզապես աշխատեց !!!

Այսպիսով, խնդիրն այն էր, որ լռելյայն տեղադրված ավելի քիչ տարբերակը (2.3.1) չափազանց նոր էր compile.js-ի համար, որը գալիս էր claro թեմայով: Երբ ես իջեցրի ավելի քիչը մինչև 1.7.5 տարբերակ, այնքան քիչ վերլուծիչն աշխատեց, ինչպես և սպասվում էր:

Հուսով եմ, որ սա օգնում է ինչ-որ մեկին:

01.02.2015
  • FWIW, ../../../util/less/lib/lesscompile.js-ում արդեն հղում է կատարում less-ի հատուկ տարբերակին, որը առաքվում է Dojo-ի util փաթեթով, որը ներառված է Dojo-ի ամբողջական գործիքակազմում: Եթե ​​ունեք ամբողջ գործիքակազմը, compile.js-ը պետք է Just Work. 02.02.2015
  • Շնորհակալություն։ Ես ավելի ուշ հասկացա, որ «util» փաթեթը ներառված չէր թողարկման արխիվում, որը փաթեթավորված էի, որը ես ի սկզբանե ներբեռնել էի: «Util» փաթեթը առկա է միայն սկզբնաղբյուրի արխիվի փաթեթում, որը ես չէի ներբեռնել: Ես դա կհիշեմ հետագա ներբեռնումների համար: 03.02.2015
  • Նոր նյութեր

    Օգտագործելով Fetch Vs Axios.Js-ը՝ HTTP հարցումներ կատարելու համար
    JavaScript-ը կարող է ցանցային հարցումներ ուղարկել սերվեր և բեռնել նոր տեղեկատվություն, երբ դա անհրաժեշտ լինի: Օրինակ, մենք կարող ենք օգտագործել ցանցային հարցումը պատվեր ներկայացնելու,..

    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար
    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար Ինչպե՞ս հանգստացնել ձեր միտքը և աշխատեցնել ձեր պրոցեսորը: Ինչպես մնալ հանգիստ և զարգանալ ճնշման տակ...

    Մեքենայի ուսուցում բանկային և ֆինանսների ոլորտում
    Բարդ, խելացի անվտանգության համակարգերը և հաճախորդների սպասարկման պարզեցված ծառայությունները բիզնեսի հաջողության բանալին են: Ֆինանսական հաստատությունները, մասնավորապես, պետք է առաջ մնան կորի..

    Ես AI-ին հարցրի կյանքի իմաստը, այն ինչ ասում էր, ցնցող էր:
    Այն պահից ի վեր, երբ ես իմացա Արհեստական ​​ինտելեկտի մասին, ես հիացած էի այն բանով, թե ինչպես է այն կարողանում հասկանալ մարդկային նորմալ տեքստը, և այն կարող է առաջացնել իր սեփական արձագանքը դրա..

    Ինչպես սովորել կոդավորումը Python-ում վագրի պես:
    Սովորելու համար ծրագրավորման նոր լեզու ընտրելը բարդ է: Անկախ նրանից, թե դուք սկսնակ եք, թե առաջադեմ, դա օգնում է իմանալ, թե ինչ թեմաներ պետք է սովորել: Ծրագրավորման լեզվի հիմունքները, դրա..

    C++-ի օրական բիթ(ե) | Ամենաերկար պալինդրոմային ենթաշարը
    C++ #198-ի ամենօրյա բիթ(ե), Ընդհանուր հարցազրույցի խնդիր. Ամենաերկար պալինդրոմային ենթատող: Այսօր մենք կանդրադառնանք հարցազրույցի ընդհանուր խնդրին. Ամենաերկար palindromic substring...

    Kydavra ICAReducer՝ ձեր տվյալների ծավալայինությունը նվազեցնելու համար
    Ի՞նչ է ICAReducer-ը: ICAReducer-ն աշխատում է հետևյալ կերպ. այն նվազեցնում է նրանց միջև բարձր փոխկապակցված հատկանիշները մինչև մեկ սյունակ: Բավականին նման է PCAreducer-ին, չնայած այն..