【发布时间】:2016-12-04 06:10:55
【问题描述】:
我正在使用 browserify 和 babel 来编译和捆绑我的 react 应用程序。来自client/ 的文件被捆绑到一个文件static/bundle.js 中。但我使用了似乎处理不正确的相对导入。
这是我的文件结构
client/
components/
main.js
App.js
static/
bundle.js
gulpfile.js
这是我的 gulpfile 和有问题的导入
// client/App.js
import React, { Component } from 'react';
import { render } from 'react-dom';
import App from './components/main.js';
render(
<App />,
document.getElementById('root'),
);
// gulpfile.js
var gulp = require('gulp');
var browserify = require('browserify');
var babelify = require('babelify');
var source = require('vinyl-source-stream');
gulp.task('build', function() {
browserify({
entries: 'client/App.js',
extensions: ['.js'],
debug: true
})
.transform(babelify, {presets: ['es2015', 'react']})
.bundle()
.pipe(source('bundle.js'))
.pipe(gulp.dest('static'));
});
问题出在import App from './components/main.js';这一行。
当我查看static/bundle.js 时,有一行var _main = require('./components/main.js');,这没有意义,因为相对于bundle.js,没有./components/main.js。这是相对于client/App.js 定义的。
browserify 不处理这些事情吗?还有其他我应该使用的工具,还是我做的其他事情不正确?
【问题讨论】:
标签: javascript reactjs ecmascript-6 babeljs