我在通用 React 应用程序中的 Browserify Envify模块遇到问题。
我有以下功能切换文件:
export const featureToggles = {
FEATURE_EXAMPLE: (process.env.FEATURE_EXAMPLE === 'true')
};
在我的 Browserify 输出中变成
"use strict";Object.defineProperty(exports, "__esModule", { value: true });exports.featureToggles = void 0;const featureToggles = {
FEATURE_EXAMPLE: process.env.FEATURE_EXAMPLE === 'true' };exports.featureToggles = featureToggles;
当我在我的通用 React 应用程序中使用时,featureToggles
我得到了来自服务器的正确响应,但客户端在补水时会覆盖。导致服务器的新功能被客户端水合中的旧功能取代。
我的 Browserify 脚本如下所示(此代码段将在下面重复多次,并根据我的尝试进行一些小的更改):
const envify = require('envify/custom');
// function declarations etc
browserify()
.transform(
babelify.configure({
ignore: [/(bower_components)|(node_modules)/]
})
)
.transform(envify(process.env))
.bundle()
.on('error', handleError)
.pipe(source('app.js'))
.pipe(buffer())
.pipe(gulpif(globalSettings.production, stripDebug()))
.pipe(gulpif(globalSettings.production, uglify()))
.pipe(gulp.dest(taskSettings.scripts.dest));
我尝试用正常替换自定义 envify(自述文件中缺少示例):
const envify = require('envify');
// function declarations etc
browserify()
.transform(
babelify.configure({
ignore: [/(bower_components)|(node_modules)/]
})
)
.transform(envify)
.bundle()
// same as before here
.pipe(gulp.dest(taskSettings.scripts.dest));
我试过设置变量显式:
const envify = require('envify/custom');
// function declarations etc
browserify()
.transform(
babelify.configure({
ignore: [/(bower_components)|(node_modules)/]
})
)
.transform(envify({FEATURE_EXAMPLE: 'please, something'})
.bundle()
// same as before here
.pipe(gulp.dest(taskSettings.scripts.dest));
我试过清除:
const envify = require('envify/custom');
// function declarations etc
browserify()
.transform(
babelify.configure({
ignore: [/(bower_components)|(node_modules)/]
})
)
.transform(envify({_: 'purge', FEATURE_EXAMPLE: 'please, something'})
.bundle()
// same as before here
.pipe(gulp.dest(taskSettings.scripts.dest));
我试过在全球范围内运行它:
const envify = require('envify/custom');
// function declarations etc
browserify()
.transform(
babelify.configure({
ignore: [/(bower_components)|(node_modules)/]
})
)
.transform({global: true}, envify({FEATURE_EXAMPLE: 'please, something'})
.bundle()
// same as before here
.pipe(gulp.dest(taskSettings.scripts.dest));
我继承了代码,所以我基本上只是在黑暗中摸索。任何帮助,将不胜感激!
根据我对 envify 的了解,我期望得到以下输出:
"use strict";Object.defineProperty(exports, "__esModule", { value: true });exports.featureToggles = void 0;const featureToggles = {
FEATURE_EXAMPLE: 'true' === 'true' };exports.featureToggles = featureToggles;
如果有任何帮助,我的功能切换可以在本地工作,但不能在我的暂存环境中工作。当我循环浏览我的功能并动态阅读时,它起初也不起作用process.env
。这意味着 envify 至少会有所作为?