【发布时间】:2016-02-01 10:30:15
【问题描述】:
[在简化并找到某种答案后,我正在重写问题。以下 Bergi 的有用 cmets 指的是旧版本。]
Webpack 似乎弄乱了扩展 Array 的类的对象。我相信这应该可以工作,并且它确实可以在节点和 jsfiddle 中工作:https://jsfiddle.net/sigfried/n2pab49q/2/
"use strict";
class ThingArray extends Array {
constructor(data, parentThing) {
super(data);
console.log(`sending a [${this.constructor.toString().replace(/.\n[\w\W]*$/,'')}] to thing.method`);
debugger; // in browser console, type this.constructor, it shows
// ThingArray, but the console.log above shows Array
test(this);
}
}
function test(ta) {
console.log(`I'm expecting a ThingArray, and what I'm getting is a [${ta.constructor.toString().replace(/.\n[\w\W]*$/,'')}]`);
console.log(`Is it a ThingArray? The answer is ${!!(ta instanceof ThingArray)}`);
}
let twothings = new ThingArray(['baz',42]);
console.log(twothings);
if (typeof window !== "undefined") {
var div = document.getElementById('example');
div.innerHTML = twothings;
}
之前的代码和我对问题的理解要复杂得多。 我无法弄清楚我做错了什么。根据我在下面添加的答案,Bergi 鼓励我简化它,它看起来像一个 webpack 错误。但以防万一我使用错了 webpack,我将包含我的 webpack.conf.js 和 package.json
var webpack = require('webpack');
module.exports = {
entry: [
'./index.js',
],
output: {
filename: 'bundle.js'
},
module: {
loaders: [
{
test: /\.js$/,
loader: 'babel',
exclude: /node_modules/,
query: {
presets: ['es2015']
}
},
]
},
};
{
"name": "array-extend-bug",
"version": "0.0.1",
"description": "problem with webpack handling array extensions",
"main": "index.js",
"scripts": {
"build": "webpack-dev-server"
},
"repository": {
"type": "git",
"url": "git@gist.github.com:5c96b880d7986776e541.git"
},
"keywords": [
"webpack",
"es6",
"bug"
],
"author": "Sigfried Gold",
"license": "MIT",
"dependencies": {},
"devDependencies": {
"babel": "^6.3.26",
"babel-core": "^6.0.12",
"babel-loader": "^6.0.1",
"babel-preset-es2015": "^6.0.12",
"babel-preset-stage-0": "^6.3.13",
"webpack": "^1.12.10",
"webpack-dev-server": "^1.14.1"
}
}
【问题讨论】:
-
抱歉,如果您不能给我们提供重现此内容的代码,我们几乎无法为您提供帮助。
-
嗯,调试器镜像中有代码。我不认为你想要一千行代码,这就是为什么我试图在一个简短的例子中复制这个问题。如果我知道要包括一千行的哪一部分,我会的。如果有人可以建议我在两个调试器图像中显示的内容是如何发生的,那可能会帮助我找到问题。
-
只要问题仍然存在,请尝试通过反复废弃一半代码来分解它。
-
对。我有时会这样做。我会尽力。另一个提示,可能没有太大帮助:我的代码所在的库在我的 node.js 测试套件中也可以正常工作,但是当我从反应组件调用它时,它就会崩溃。因此,我将开始尝试使用 react 代码遵循您的建议。
标签: javascript arrays class ecmascript-6 webpack