[node.js] Gulp-autoprefixer throwing ReferenceError : Promise is not defined

나는 내 sass를 컴파일 한 다음 autoprefixit을 사용하여 gulp를 만들려고 노력 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",

및 NPM 버전 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)

나는 내가 뭘 잘못하고 있는지 정말 모른다. sass 또는 일반 CSS를 사용할 때 작동하지 않습니다. 내 파일에 뭔가가 있다고 생각합니다.



답변

같은 문제가있었습니다. 나를 위해 노드 업데이트가 작동하지 않았지만 gulpfile의 맨 처음에 이것을 추가하면 다음과 같이 작동했습니다.

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


답변

다음을 사용하여 node.js를 최신 버전으로 업데이트했습니다.

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

여기에 표시된대로 내 Ubuntu 컴퓨터의 경우 .

그 후 다음을 사용하여 NPM을 업데이트했습니다.

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

여기에 표시된대로 .

이제 gulp-autoprefixer시작은 작동하지만에서 오류가 발생했습니다 gulp-sass. 이 지침을 사용하여 업데이트했습니다.

  1. node_modules 폴더 삭제
  2. package.json 파일에서 gulp-sass 제거
  3. package.json 파일에서 node-sass를 제거하십시오 (해당 파일이있는 경우).
  4. npm install gulp-sass –save-dev 실행
  5. 필요에 따라 Gulp 작업 업데이트

여기 에서 발견 내가 가지고 부탁해 "gulp-sass": "^2.0.4"이 내 모든 문제를 해결했습니다.

조언과 도움을 주셔서 감사합니다.


답변

package.json이있는 프로젝트 위치에 es6-promise를 설치합니다.

npm install es6-promise

그런 다음 gulpfile.js의 첫 번째 줄을 다음 코드로 만듭니다.

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


답변

이것은 질문에 직접 답하지는 않지만 ionic 2 튜토리얼을 실행하려고 할 때이 오류가 발생하는 사람들에게 유용 할 수 있습니다.

다른 답변에서 지적했듯이 문제 es6-promise는 누락되었습니다.

ionic 2 튜토리얼 ( https://github.com/driftyco/ionic2-starter-tutorial ) 을 시작하려고 할 때 동일한 오류가 발생했습니다 . (내 ionic 2 버전은 2.0.0-beta.25이고 최신 튜토리얼 커밋은 ed9ef2fcce887e4d1c08c375c849b06b8394bad7입니다. )

다음은 앱을 실행하려고 할 때 얻은 스택 추적입니다 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

이 변경 후 문제가 해결되어 로컬 서버를 시작할 수있었습니다.


답변