2015-09-09 12 views
80

Tôi cố gắng thực hiện một gói biên dịch sass của tôi sau đó autoprefixit với gulp-autoprefixer nhưng tôi nhận được một lỗi.Gulp-autoprefixer ném Tham chiếuLỗi: Hứa hẹn không được xác định

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')); 
}); 

Tôi đang cố gắng để chạy Gulpfile.js và tôi đang sử dụng:

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

và NPM phiên bản 1.3.10

Khi tôi chạy gulp test tôi có được điều này:

/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) 

Tôi thực sự không biết mình đang làm gì sai. Không hoạt động khi tôi sử dụng sass hoặc đồng bằng css. Tôi nghĩ rằng đó là một cái gì đó với các tập tin của tôi.

+1

Không chắc chắn điều này liên quan đến Sass (hoặc CSS cho vấn đề đó), khi lỗi được Autoprefixer đưa ra. – cimmanon

+2

Bạn không chắc chắn đây có phải là giải pháp hay không .... nhưng phiên bản NPM của bạn đã lỗi thời. Hãy thử cập nhật npm và tất cả các gói của bạn, tôi đã chạy vào quirks lạ như thế này trước khi chạy các phiên bản cũ hơn. –

Trả lời

65

tôi cập nhật Node.js lên phiên bản mới nhất sử dụng:

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

cho máy tính Ubuntu của tôi, như thể hiện here.

Sau đó tôi được cập nhật NPM sử dụng:

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

Như here.

Bây giờ, gulp-autoprefixer bắt đầu hoạt động nhưng tôi gặp lỗi từ gulp-sass. Tôi cập nhật nó sử dụng hướng dẫn này:

  1. Xóa node_modules của bạn thư mục
  2. Remove ngụm-sass từ file package.json bạn
  3. Remove nút-sass từ file package.json của bạn (nếu bạn có nó ở đó)
  4. Run NPM cài đặt ngụm-sass --save-dev
  5. cập nhật nhiệm vụ Gulp của bạn theo yêu cầu

Tìm thấy here Now i có "gulp-sass": "^2.0.4" và điều này cố định tất cả các vấn đề của tôi.

Cảm ơn lời khuyên và trợ giúp.

+11

Bạn có thể nhận 'node-sass' làm việc với' npm rebuild node-sass' sau khi nâng cấp nút. – xiuyuan

+0

chỉ hoạt động tốt. cảm ơn. cũng thông báo bàn điều khiển yêu cầu chạy lệnh này khi bạn gặp lỗi khi chạy tác vụ –

+1

Đây thực sự là vấn đề về phiên bản NodeJS, xem https://github.com/sindresorhus/gulp-autoprefixer/issues/45 – tricasse

78

Đã xảy ra sự cố tương tự. Đối với tôi, việc cập nhật nút không làm việc nhưng thêm này vào đầu rất của gulpfile tôi đã làm:

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

Điều này giải quyết được vấn đề cho tôi. –

+2

Điều này cũng làm việc cho tôi. Bất kỳ ý tưởng tại sao? – Barryman9000

+0

Chuyện gì vừa xảy ra? Hôm qua mọi thứ đã được xây dựng đúng cách ... –

29

Install es6-lời hứa ở vị trí dự án ur nơi package.json tồn tại

npm install es6-promise 

Sau đó thực hiện dòng đầu tiên của gulpfile.js của bạn có đoạn mã sau:

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

này không trả lời câu hỏi trực tiếp nhưng nó có thể có ích cho những người nhận được lỗi này khi cố gắng chạy ion 2 hướng dẫn.

Được chỉ ra bởi các câu trả lời khác, vấn đề là thiếu es6-promise.

Tôi đã nhận lỗi tương tự khi cố gắng để bắt đầu hướng dẫn ion 2 (https://github.com/driftyco/ionic2-starter-tutorial): (phiên bản ion 2 của tôi là 2.0.0-beta.25 và hướng dẫn mới nhất cam kết là ed9ef2fcce887e4d1c08c375c849b06b8394bad7)

Đây là chồng theo dõi tôi nhận được khi cố gắng chạy các ứng dụng với 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) 

Một lần nữa, như đã được chỉ bởi câu trả lời khác, đây là cách để giải quyết này:

  1. chỉnh sửa gulpfile.js và thêm vào dòng 6: require('es6-promise').polyfill();

  2. cài đặt phụ thuộc mất tích với: npm install es6-promise --save

Sau những thay đổi này, vấn đề đã được cố định và tôi đã có thể khởi động máy chủ địa phương .

+0

Điều này đã giải quyết được vấn đề cho tôi, tất cả những gì tôi cần làm là sử dụng npm install es6-promise với - tiết kiệm, và sử dụng này yêu cầu với .pollyfill, sử dụng .Promise() như trong một awnser ở trên đã không làm việc cho tôi. – killstreet

Các vấn đề liên quan