我正在使用browserify和babel来转换和捆绑我的脚本。问题是当我使用React 16时,它会给我这样的错误消息:
未捕获的错误:缩小的React错误#200;访问http://facebook.github.io/react/docs/error-decoder.html?invariant=200获取完整的消息,或者使用非缩小的开发环境获取完整的错误和其他有用的警告。
我知道什么是意义,但我已经在开发模式,而不是生产。
// gulpfile.js
const isProduction = config.environment === 'production';
if(isProduction) {
process.env.NODE_ENV = 'production';
}
else {
process.env.NODE_ENV = 'development';
}
console.log(process.env.NODE_ENV); // it saids: development
function buildJs() {
let bopts = {
paths: [
`${SRC_DIR}/js`,
`${SRC_DIR}/scss`
],
debug: true
};
let opts = Object.assign({}, watchify.args, bopts);
let b = watchify(persistify(opts))
.add(`${SRC_DIR}/js/index.js`)
.on('update', bundle)
.on('log', gutil.log)
.transform(babelify, {
presets: ["es2015", "react"]
})
.transform(scssify, {
autoInject: true
});
function bundle() {
let stream = b.bundle()
.on('error', swallowError)
.on('end', () => {
browserSync.reload();
})
.on('error', swallowError)
.pipe(source('bundle.js'));
if(isProduction) {
stream.pipe(streamify(uglify()));
}
return stream.pipe(gulp.dest(`${BUILD_DIR}/js`));
}
return bundle();
}
为什么会发生这种情况,如何解决?
错误是我试图在没有根元素的模板中注入
bundle.js
。因此,将bundle.js和root元素移动到需要它的模板中,而不是其他元素。那就解决了。