गुल-ऑटोप्रिफ़र फेंकने वाला संदर्भ संदर्भ: वादा परिभाषित नहीं है


81

मैं कोशिश करता हूं कि एक गपशप मेरे एसएएस को ऑटोप्रेफिक्सिट के साथ संकलित करें gulp-autoprefixerलेकिन मुझे एक त्रुटि मिल रही है।

var gulp = require('gulp'),
    sass = require('gulp-sass'),
    autoprefixer = require('gulp-autoprefixer');

gulp.task('test', function(){
    gulp.src('_sass/main.sass')
        .pipe(sass())
        .pipe(autoprefixer()) 
        .pipe(gulp.dest('./assets/css')); 
});

मैं इसे चलाने की कोशिश कर रहा हूं Gulpfile.jsऔर इसका उपयोग कर रहा हूं :

"gulp": "~3.9.0",
"gulp-sass": "~2.0.4",
"gulp-autoprefixer": "~3.0.1",

और एनपीएम संस्करण 1.3.10

जब मैं दौड़ता gulp testहूँ तो मुझे यह मिलता है:

/home/matei/Tests/test-4/node_modules/gulp-autoprefixer/node_modules/postcss/lib/lazy-result.js:152
        this.processing = new Promise(function (resolve, reject) {
                              ^
ReferenceError: Promise is not defined
    at LazyResult.async (/home/matei/Tests/test-4/node_modules/gulp-autoprefixer/node_modules/postcss/lib/lazy-result.js:152:31)
    at LazyResult.then (/home/matei/Tests/test-4/node_modules/gulp-autoprefixer/node_modules/postcss/lib/lazy-result.js:75:21)
    at DestroyableTransform._transform (/home/matei/Tests/test-4/node_modules/gulp-autoprefixer/index.js:28:13)
    at DestroyableTransform.Transform._read (/home/matei/Tests/test-4/node_modules/gulp-autoprefixer/node_modules/through2/node_modules/readable-stream/lib/_stream_transform.js:172:10)
    at DestroyableTransform.Transform._write (/home/matei/Tests/test-4/node_modules/gulp-autoprefixer/node_modules/through2/node_modules/readable-stream/lib/_stream_transform.js:160:12)
    at doWrite (/home/matei/Tests/test-4/node_modules/gulp-autoprefixer/node_modules/through2/node_modules/readable-stream/lib/_stream_writable.js:326:12)
    at writeOrBuffer (/home/matei/Tests/test-4/node_modules/gulp-autoprefixer/node_modules/through2/node_modules/readable-stream/lib/_stream_writable.js:312:5)
    at DestroyableTransform.Writable.write (/home/matei/Tests/test-4/node_modules/gulp-autoprefixer/node_modules/through2/node_modules/readable-stream/lib/_stream_writable.js:239:11)
    at write (/home/matei/Tests/test-4/node_modules/gulp-sass/node_modules/through2/node_modules/readable-stream/lib/_stream_readable.js:623:24)
    at flow (/home/matei/Tests/test-4/node_modules/gulp-sass/node_modules/through2/node_modules/readable-stream/lib/_stream_readable.js:632:7)

मैं वास्तव में नहीं जानता कि मैं क्या गलत कर रहा हूँ। काम नहीं कर रहा है जब मैं सैस या सादे सीएसएस का उपयोग करता हूं। मुझे लगता है कि मेरी फाइलों के साथ कुछ है।


1
यह निश्चित नहीं है कि इस मामले के लिए सैस (या सीएसएस) के साथ क्या करना है, जब त्रुटि को ऑटोप्रिफ़र द्वारा फेंका जा रहा है।
साइमन 22

2
निश्चित नहीं है कि यह समाधान है या नहीं .... लेकिन आपका एनपीएम संस्करण पुराना है। Npm और अपने सभी पैकेजों को अपडेट करने का प्रयास करें, मैंने पुराने बिल्ड को चलाने से पहले इस तरह से अजीब विचित्रताओं में भाग लिया है।
बेंजामिन सोलम

जवाबों:


78

एक ही मुद्दा था। मेरे लिए, नोड को अपडेट करने से काम नहीं चला बल्कि अपने गल्पफाइल की शुरुआत में इसे शामिल किया:

require('es6-promise').polyfill();

यह एक अच्छा "हॉटफ़िक्स" है, बेहतर समाधान नोड को ऊपर उठाना है। जेएस (@ मेटी का उत्तर देखें)
मार्क

1
@ जैसा कि मैंने अपने जवाब में कहा था, अद्यतन करने से समस्या का समाधान नहीं हुआ
क्रिस सियर्स

4
क्या पैकेज है? मुझे मिलता हैcannot find module es6-promise
विक्टर

3
@ विक्टर npm install es6-promiseअपने टर्मिनल में चलने की कोशिश करते हैं
माइकल

66

मैंने निम्नांकित संस्करण का नोड.जेएस अपडेट किया है:

# Using Ubuntu
curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -
sudo apt-get install -y nodejs

मेरे उबंटू मशीन के लिए, जैसा कि यहां दिखाया गया है

उसके बाद मैंने NPM का उपयोग करके अद्यतन किया:

sudo npm cache clean -f
sudo npm install -g n
sudo n stable

जैसा कि यहाँ दिखाया गया है

अब gulp-autoprefixerकाम शुरू, लेकिन मुझे एक त्रुटि मिली gulp-sass। मैंने इस निर्देश का उपयोग करके इसे अपडेट किया:

  1. अपना नोड_मॉडल फ़ोल्डर हटाएं
  2. अपने पैकेज से gulp-sass को निकालें। json फ़ाइल
  3. अपने Package.json फ़ाइल से नोड-एसएएस निकालें (यदि आपके पास वहां है)
  4. एनपीएम स्थापित करें gulp-sass - save-dev
  5. आवश्यकतानुसार अपना गुलप कार्य अपडेट करें

यहाँ पाया है अब मेरे पास है "gulp-sass": "^2.0.4"और यह मेरी सभी समस्याओं को ठीक करता है।

सलाह और मदद के लिए धन्यवाद।


11
नोड अपग्रेड node-sassकरने के npm rebuild node-sassबाद आप इसके साथ काम कर सकते हैं ।
ह्यूग ग्रिग्ग

बस महान काम किया। धन्यवाद। कंसोल संदेश भी इस कमांड को चलाने के लिए कहता है जब आप कार्य चलाते समय त्रुटि का सामना करते हैं
पुष्पक पटेल

1
यह वास्तव में एक NodeJS संस्करण मुद्दा है, github.com/sindresorhus/gulp-autoprefixer/issues/45
tricasse

अच्छे निर्देश। OS-agnostic के निर्देश nodesource.com/services/upgrad-self-service
toad

मुझे उन चरणों की आवश्यकता नहीं थी: sudo npm cache clean -f sudo npm install -g n sudo n stableऔर npm rebuild node-sassनोड-एसएएस समस्या को ठीक करने के लिए उपयोग किया जाता था। :)
एडु रुइज़

29

उर-परियोजना के स्थान पर es6-वादा स्थापित करें जहाँ package.json मौजूद है

npm install es6-promise

फिर अपने gulpfile.js की पहली पंक्ति को निम्न कोड बनाएं:

var Promise = require('es6-promise').Promise;

2

यह सीधे प्रश्न का उत्तर नहीं देता है, लेकिन यह उन लोगों के लिए उपयोगी हो सकता है जो आयनिक 2 ट्यूटोरियल को चलाने की कोशिश करते समय यह त्रुटि प्राप्त करते हैं।

जैसा कि अन्य उत्तरों द्वारा बताया गया है कि समस्या es6-promiseगायब है।

आयनिक 2 ट्यूटोरियल ( https://github.com/driftyco/ionic2-starter-tutorial ) शुरू करने की कोशिश करते समय मुझे वही त्रुटि मिली : (मेरा आयनिक 2 संस्करण 2.0.0-बीटा.25 है और नवीनतम ट्यूटोरियल कमिट ed9x2fcce887e4d1c08c375c849b06b8397b7b77) है। )

यह वह स्टैक ट्रेस है जो मुझे ऐप को चलाने की कोशिश करते समय मिला था ionic serve:

Running 'serve:before' gulp task before serve
[18:37:00] Starting 'clean'...
[18:37:01] Finished 'clean' after 1.02 s
[18:37:01] Starting 'watch'...
[18:37:01] Starting 'sass'...
[18:37:01] Starting 'html'...
[18:37:01] Starting 'fonts'...
[18:37:01] Starting 'scripts'...
[18:37:01] Finished 'scripts' after 62 ms
[18:37:01] Finished 'html' after 72 ms
[18:37:01] Finished 'fonts' after 77 ms
Caught exception:
 ReferenceError: Promise is not defined
    at LazyResult.async (/home/stitakis/dev/playground/ionic2/myTutorial/node_modules/ionic-gulp-sass-build/node_modules/gulp-autoprefixer/node_modules/postcss/lib/lazy-result.js:157:31)
    at LazyResult.then (/home/stitakis/dev/playground/ionic2/myTutorial/node_modules/ionic-gulp-sass-build/node_modules/gulp-autoprefixer/node_modules/postcss/lib/lazy-result.js:79:21)
    at DestroyableTransform._transform (/home/stitakis/dev/playground/ionic2/myTutorial/node_modules/ionic-gulp-sass-build/node_modules/gulp-autoprefixer/index.js:24:6)
    at DestroyableTransform.Transform._read (/home/stitakis/dev/playground/ionic2/myTutorial/node_modules/ionic-gulp-sass-build/node_modules/gulp-autoprefixer/node_modules/through2/node_modules/readable-stream/lib/_stream_transform.js:159:10)
    at DestroyableTransform.Transform._write (/home/stitakis/dev/playground/ionic2/myTutorial/node_modules/ionic-gulp-sass-build/node_modules/gulp-autoprefixer/node_modules/through2/node_modules/readable-stream/lib/_stream_transform.js:147:83)
    at doWrite (/home/stitakis/dev/playground/ionic2/myTutorial/node_modules/ionic-gulp-sass-build/node_modules/gulp-autoprefixer/node_modules/through2/node_modules/readable-stream/lib/_stream_writable.js:313:64)
    at writeOrBuffer (/home/stitakis/dev/playground/ionic2/myTutorial/node_modules/ionic-gulp-sass-build/node_modules/gulp-autoprefixer/node_modules/through2/node_modules/readable-stream/lib/_stream_writable.js:302:5)
    at DestroyableTransform.Writable.write (/home/stitakis/dev/playground/ionic2/myTutorial/node_modules/ionic-gulp-sass-build/node_modules/gulp-autoprefixer/node_modules/through2/node_modules/readable-stream/lib/_stream_writable.js:241:11)
    at DestroyableTransform.ondata (/home/stitakis/dev/playground/ionic2/myTutorial/node_modules/ionic-gulp-sass-build/node_modules/gulp-sass/node_modules/through2/node_modules/readable-stream/lib/_stream_readable.js:531:20)
    at DestroyableTransform.EventEmitter.emit (events.js:95:17) 

फिर से, जैसा कि अन्य उत्तरों द्वारा बताया गया है, यह इस प्रकार हल करना है:

  1. gulpfile.js संपादित करें और 6 पंक्ति में जोड़ें: require('es6-promise').polyfill();

  2. लापता निर्भरता स्थापित करें: npm install es6-promise --save

इस परिवर्तन के बाद, समस्या ठीक हो गई थी और मैं स्थानीय सर्वर शुरू करने में सक्षम था।


इसने मेरे लिए समस्या को ठीक कर दिया, मुझे केवल यह करने की आवश्यकता थी- nave --save के साथ n6-es-वादा स्थापित करने के लिए उपयोग करें, और .pollyfill के साथ इस आवश्यकता का उपयोग करें, का उपयोग करें। () के रूप में ऊपर एक awnser में मेरे लिए काम नहीं किया।
किलस्ट्रीट 8
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.