Node.js Gulp autoprefixer引发引用错误:未定义承诺
我尝试使用Node.js Gulp autoprefixer引发引用错误:未定义承诺,node.js,npm,gulp,autoprefixer,Node.js,Npm,Gulp,Autoprefixer,我尝试使用gulp autoprefixer对我的sass进行一次gulp编译,然后进行autoprefixit,但我遇到了一个错误 var gulp = require('gulp'), sass = require('gulp-sass'), autoprefixer = require('gulp-autoprefixer'); gulp.task('test', function(){ gulp.src('_sass/main.sass') .p
gulp autoprefixer
对我的sass进行一次gulp编译,然后进行autoprefixit,但我遇到了一个错误
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
当我运行gulptest
时,我得到以下结果:
/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机器,如图所示
之后,我使用以下工具更新了NPM:
sudo npm cache clean -f
sudo npm install -g n
sudo n stable
如图所示
现在,gulp autoprefixer
开始工作,但我从gulp sass
得到一个错误。我使用以下说明对其进行了更新:
“吞咽sass”:“^2.0.4”
,这解决了我所有的问题
谢谢你的建议和帮助。也有同样的问题。对我来说,更新节点不起作用,但在gulpfile的最开始添加它会起作用:
require('es6-promise').polyfill();
在存在package.json的ur项目位置安装es6 promise
npm install es6-promise
然后将gulpfile.js的第一行代码设置为以下代码:
var Promise = require('es6-promise').Promise;
这并不能直接回答这个问题,但对于那些在尝试运行ionic 2教程时遇到此错误的人来说,这可能会很有用 正如其他答案所指出的,问题在于缺少
es6承诺
我在尝试启动离子2教程()时遇到了相同的错误:
(我的爱奥尼亚2版本是2.0.0-beta.25,最新的教程提交是ED9EF2FCEC887E4D1C08C375C849B06B8394BAD7)
这是我在尝试使用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
更改后,问题得到了解决,我可以启动本地服务器。不确定这与Sass(或CSS)有什么关系,当Autoprefixer抛出错误时。不确定这是否是解决方案。。。。但是你的NPM版本已经过时了。尝试更新npm和您的所有软件包,我以前在运行较旧版本时遇到过类似的怪癖。升级节点后,您可以使用npm-rebuild-node-sass
处理。谢谢此外,当您在运行Task时遇到错误时,console消息会要求运行此命令。这确实是NodeJS版本问题,请参阅良好说明。操作系统不可知说明可以在以下位置找到:我不需要这些步骤:sudo npm缓存清理-f sudo npm安装-g n sudo n stable
,并使用npm rebuild node sass
修复节点sass问题:这是一个很好的“修补程序”,更好的解决方案是升级node.js(参见@Matei)@MonkeyKing正如我在回答中所说,更新node并不能解决问题什么包?我得到找不到模块es6 promise
@Victor尝试在您的终端运行npm install es6 promise
这对我来说解决了问题,我所需要做的就是将npm install es6 promise与--save一起使用,并将此require与.pollyfill一起使用,使用.promise(),就像在上面的awnser中那样对我不起作用。