javascript - 使用 Browserify API,在本地文件上使用 require 和排除

标签 javascript node.js gulp browserify

通过 Browserify API 和 Gulp,我得到了这个:

var browserify = require('browserify');
var gulp = require('gulp');
var source = require('vinyl-source-stream');

var dependencies = [
  'lodash',
  './test.js',
];

gulp.task('lib', function() {
  return browserify()
    .require(dependencies)
    .bundle()
    .pipe(source('lib.js'))
    .pipe(gulp.dest('./'));
});

gulp.task('app', function() {
  return browserify('./app.js')
    .external(dependencies)
    .bundle()
    .pipe(source('bundle.js'))
    .pipe(gulp.dest('./'));
});

app.js 中我有这个:

var _ = require('lodash');
var test = require('./test.js');

Lodash 行工作正常,但 ./test.js 不起作用。我收到错误错误:找不到模块“/test.js”

如何让它发挥作用?

由于某种原因,bundle.jslib.js 之间的键有所不同。在 lib.js 中,test.js 的键是完整路径 (/Users/gary/Projects/browserify-test/test.js),而在 bundle.js 中,它正在查找具有键 ./test.js 的模块。如果我手动将后者更改为与前者相同,那么它就可以工作。

我猜测,最终,Browserify 不支持对同一包中排除的本地文件进行 require

最佳答案

browserify 需要一个绝对路径来检索文件,并将其保留为捆绑 key 。修复它的方法是使用 expose 选项...

在你的构建中..

var dependencies = [
  'lodash',
  {file: './test.js', expose: 'test'},
];

在 app.js 中...

var _ = require('lodash');
var test = require('test');

关于javascript - 使用 Browserify API,在本地文件上使用 require 和排除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39044991/

相关文章:

javascript - 为 Azure API 管理创建的 SAS token 无效

javascript - 将文件保存在实体 POD 上

javascript - AJAX 未将图像上传到后端服务

node.js - nodejs 单元测试 PubSub.publish 不发送数据

javascript - 生产源图。它们有必要吗?

javascript - 将文件上传到服务器的发布表单,请求中仅显示文件名?

javascript - 为什么在 enter 上分离 d3 方法链会改变结果?

javascript - 如何从 Node js服务器向客户端显示shell脚本的结果?

sass - 保存部分时 Gulp-sass 触发但不写入输出

javascript - 如何将输入管道输入到 gulp 中的 uglify-js-harmony