感谢您对此事的考虑!在过去的几天里,我一直在搜索SO,GH和其他任何我能想到的关于这个问题的任何线索。希望它实际上是一个问题。
鉴于我的webpack条目来源:
global.val = 'some-value';
// 1) Global variables work just fine when the source is require'd
require('./second');
// 2) Global variables don't seem to be available when the source is imported
// Results in: ReferenceError: val is not defined
import './second';
我的第二个源文件只是记录该值:
console.log(val);
如果导入second.js
,则val
未定义。如果需要,val
设置为“某个值”'应该如此。我无法找到任何有关此行为的解释。
webpack.config.js
:
const webpack = require('webpack');
module.exports = {
output: {
filename: 'main.js',
publicPath: '/'
},
module: {
loaders: [{
test: /\.jsx?$/,
exclude: /(node_modules|bower_components)/,
loader: 'babel-loader',
query: {
presets: ['es2015','react']
}
}]
},
devtool: 'source-map'
};
版本:
我通过Babel服务器端运行完全相同的代码没有问题,但是当我通过Webpack运行它并在客户端服务器时,我最终遇到了这个问题。我已经连续几天在这个问题上踢自己了。非常感谢您提供的任何帮助!如果您需要更多信息,请告诉我们!
谢谢!
答案 0 :(得分:1)
这是预期的行为,我希望Babel做同样的事情。在执行模块主体之前处理import
语句,所以
global.val = 'some-value';
import './second';
的行为就像
import './second';
global.val = 'some-value';
如果您真的想这样做,则需要将全局分配移动到自己的模块中,例如
import './initialize-globals';
import './second';