哪个 babel 插件声明了这个 var?
Posted
技术标签:
【中文标题】哪个 babel 插件声明了这个 var?【英文标题】:Which babel plugin is declaring this var? 【发布时间】:2017-10-01 23:34:54 【问题描述】:我正在尝试启动auth0-lock
这个electron project。
在 auth0 的嵌套依赖项之一 (node-formidable
) 中,文件顶部有这一行:
if (global.GENTLY) require = GENTLY.hijack(require);
这是他们用来测试覆盖全局要求的东西,但是将global.GENTLY
设置为 false 应该绕过它进入开发模式。
然而,这个项目的 webpack/babel 配置(如下)中的某些东西正在将这一行更改为:
var require;if (global.GENTLY) require = GENTLY.hijack(require);
这将覆盖全局 require
并使用 require is not a function
破坏文件/构建的其余部分
我正在逐一浏览插件以查找正在执行此操作的内容,但到目前为止什么也没做。
有人知道什么设置会导致这种覆盖吗?
// .babelrc
"presets": [
["env",
"targets": "node": 6 ,
"useBuiltIns": true
],
"stage-0",
"react"
],
"plugins": ["add-module-exports", "dynamic-import-webpack"],
"env":
"production":
"presets": ["react-optimize"],
"plugins": ["babel-plugin-dev-expression"]
,
"development":
"plugins": [
"transform-class-properties",
"transform-es2015-classes",
"react-hot-loader/babel",
["flow-runtime",
"assert": true,
"annotate": true
]
]
// webpack config
/* eslint global-require: 0, import/no-dynamic-require: 0 */
/**
* Build config for development electron renderer process that uses
* Hot-Module-Replacement
*
* https://webpack.js.org/concepts/hot-module-replacement/
*/
import path from 'path';
import fs from 'fs';
import webpack from 'webpack';
import chalk from 'chalk';
import merge from 'webpack-merge';
import spawn, execSync from 'child_process';
import ExtractTextPlugin from 'extract-text-webpack-plugin';
import baseConfig from './webpack.config.base';
const port = process.env.PORT || 1212;
const publicPath = `http://localhost:$port/dist`;
const dll = path.resolve(process.cwd(), 'dll');
const manifest = path.resolve(dll, 'vendor.json');
/**
* Warn if the DLL is not built
*/
if (!(fs.existsSync(dll) && fs.existsSync(manifest)))
console.log(chalk.black.bgYellow.bold(
'The DLL files are missing. Sit back while we build them for you with "npm run build-dll"'
));
execSync('npm run build-dll');
export default merge.smart(baseConfig,
devtool: 'inline-source-map',
target: 'electron-renderer',
entry: [
'react-hot-loader/patch',
`webpack-dev-server/client?http://localhost:$port/`,
'webpack/hot/only-dev-server',
path.join(__dirname, 'app/index.js'),
],
output:
publicPath: `http://localhost:$port/dist/`
,
module:
rules: [
test: /\.global\.css$/,
use: [
loader: 'style-loader'
,
loader: 'css-loader',
options:
sourceMap: true,
,
]
,
test: /^((?!\.global).)*\.css$/,
use: [
loader: 'style-loader'
,
loader: 'css-loader',
options:
modules: true,
sourceMap: true,
importLoaders: 1,
localIdentName: '[name]__[local]__[hash:base64:5]',
,
]
,
// Add SASS support - compile all .global.scss files and pipe it to style.css
test: /\.global\.scss$/,
use: [
loader: 'style-loader'
,
loader: 'css-loader',
options:
sourceMap: true,
,
,
loader: 'sass-loader'
]
,
// Add SASS support - compile all other .scss files and pipe it to style.css
test: /^((?!\.global).)*\.scss$/,
use: [
loader: 'style-loader'
,
loader: 'css-loader',
options:
modules: true,
sourceMap: true,
importLoaders: 1,
localIdentName: '[name]__[local]__[hash:base64:5]',
,
loader: 'sass-loader'
]
,
// WOFF Font
test: /\.woff(\?v=\d+\.\d+\.\d+)?$/,
use:
loader: 'url-loader',
options:
limit: 10000,
mimetype: 'application/font-woff',
,
,
// WOFF2 Font
test: /\.woff2(\?v=\d+\.\d+\.\d+)?$/,
use:
loader: 'url-loader',
options:
limit: 10000,
mimetype: 'application/font-woff',
,
// TTF Font
test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/,
use:
loader: 'url-loader',
options:
limit: 10000,
mimetype: 'application/octet-stream'
,
// EOT Font
test: /\.eot(\?v=\d+\.\d+\.\d+)?$/,
use: 'file-loader',
,
// SVG Font
test: /\.svg(\?v=\d+\.\d+\.\d+)?$/,
use:
loader: 'url-loader',
options:
limit: 10000,
mimetype: 'image/svg+xml',
,
// Common Image Formats
test: /\.(?:ico|gif|png|jpg|jpeg|webp)$/,
use: 'url-loader',
]
,
plugins: [
new webpack.DllReferencePlugin(
context: process.cwd(),
manifest: require(manifest),
sourceType: 'var',
),
/**
* https://webpack.js.org/concepts/hot-module-replacement/
*/
new webpack.HotModuleReplacementPlugin(
// @TODO: Waiting on https://github.com/jantimon/html-webpack-plugin/issues/533
// multiStep: true
),
new webpack.NoEmitOnErrorsPlugin(),
/**
* Create global constants which can be configured at compile time.
*
* Useful for allowing different behaviour between development builds and
* release builds
*
* NODE_ENV should be production so that modules do not perform certain
* development checks
*
* By default, use 'development' as NODE_ENV. This can be overriden with
* 'staging', for example, by changing the ENV variables in the npm scripts
*/
new webpack.DefinePlugin(
'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV || 'development')
),
new webpack.LoaderOptionsPlugin(
debug: true
),
new ExtractTextPlugin(
filename: '[name].css'
),
],
devServer:
port,
publicPath,
compress: true,
noInfo: true,
stats: 'errors-only',
inline: true,
lazy: false,
hot: true,
headers: 'Access-Control-Allow-Origin': '*' ,
contentBase: path.join(__dirname, 'dist'),
watchOptions:
aggregateTimeout: 300,
poll: 100
,
historyApiFallback:
verbose: true,
disableDotRule: false,
,
setup()
if (process.env.START_HOT)
spawn(
'npm',
['run', 'start-hot-renderer'],
shell: true, env: process.env, stdio: 'inherit'
)
.on('close', code => process.exit(code))
.on('error', spawnError => console.error(spawnError));
,
);
【问题讨论】:
【参考方案1】:我遇到了同样的问题,通过将此插件添加到我的 webpack 配置(webpack v4)中解决了它:
new webpack.DefinePlugin( 'global.GENTLY': false )
希望他们很快会发布带有修复程序的强大@2。
【讨论】:
以上是关于哪个 babel 插件声明了这个 var?的主要内容,如果未能解决你的问题,请参考以下文章