Gulp-autoprefixer throwing ReferenceError: Promise is not defined
Gulp-autoprefixer throwing ReferenceError: Promise is not defined
我尝试 gulp 编译我的 sass,然后使用 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 时不起作用。我认为我的文件有问题。
我使用 :
将 node.js 更新到最新版本
# Using Ubuntu
curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -
sudo apt-get install -y nodejs
对于我的Ubuntu机器,如图here。
在那之后我更新了 NPM 使用:
sudo npm cache clean -f
sudo npm install -g n
sudo n stable
如图here.
现在 gulp-autoprefixer
开始工作了,但是我从 gulp-sass
那里得到了一个错误。我使用这条指令更新了它:
- 删除您的 node_modules 文件夹
- 从您的 package.json 文件中删除 gulp-sass
- 从你的 package.json 文件中删除节点-sass(如果你有它的话)
- 运行 npm install gulp-sass --save-dev
- 根据需要更新您的 Gulp 任务
找到 here。现在我有 "gulp-sass": "^2.0.4"
,这解决了我所有的问题。
感谢您的建议和帮助。
有同样的问题。对我来说,更新节点没有用,但在我的 gulpfile 的最开头添加它:
require('es6-promise').polyfill();
在 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)
同样,正如其他答案所指出的,这是解决这个问题的方法:
编辑 gulpfile.js 并在第 6 行添加:require('es6-promise').polyfill();
安装缺少的依赖项:npm install es6-promise --save
修改之后,问题解决了,我可以启动本地服务器了。
我尝试 gulp 编译我的 sass,然后使用 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 时不起作用。我认为我的文件有问题。
我使用 :
将 node.js 更新到最新版本# Using Ubuntu
curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -
sudo apt-get install -y nodejs
对于我的Ubuntu机器,如图here。
在那之后我更新了 NPM 使用:
sudo npm cache clean -f
sudo npm install -g n
sudo n stable
如图here.
现在 gulp-autoprefixer
开始工作了,但是我从 gulp-sass
那里得到了一个错误。我使用这条指令更新了它:
- 删除您的 node_modules 文件夹
- 从您的 package.json 文件中删除 gulp-sass
- 从你的 package.json 文件中删除节点-sass(如果你有它的话)
- 运行 npm install gulp-sass --save-dev
- 根据需要更新您的 Gulp 任务
找到 here。现在我有 "gulp-sass": "^2.0.4"
,这解决了我所有的问题。
感谢您的建议和帮助。
有同样的问题。对我来说,更新节点没有用,但在我的 gulpfile 的最开头添加它:
require('es6-promise').polyfill();
在 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)
同样,正如其他答案所指出的,这是解决这个问题的方法:
编辑 gulpfile.js 并在第 6 行添加:
require('es6-promise').polyfill();
安装缺少的依赖项:
npm install es6-promise --save
修改之后,问题解决了,我可以启动本地服务器了。