阵营摩卡 - `transform`
问题描述:
我开始使用ES6与我的摩卡测试缺少类的属性,但它与失败: Missing class properties transform.
阵营摩卡 - `transform`
测试
"test": "BABEL_ENV=test nyc mocha --watch tap 'test/**/*.spec.js'",
组件
class SignIn extends React.Component {
constructor(props) {
super(props);
this.state = {
email: 'as',
pw: 'as'
};
this.logIn = this.logIn.bind(this);
this.changed = this.changed.bind(this);
}
changed = (e) => {
let newDeets = {};
newDeets[e.target.name] = e.target.value;
this.setState(newDeets);
};
.babelrc
{
"presets": ["es2015", "react","react-hmre"],
"ignore": [
"public/**/*.js"
],
}
的package.json
"autoprefixer": "^6.4.0",
"babel-core": "^6.11.4",
"babel-eslint": "^4.1.6",
"babel-jscs": "^2.0.5",
"babel-loader": "^6.2.4",
"babel-preset-es2015": "^6.9.0",
"babel-preset-react": "^6.11.1",
"babel-preset-react-hmre": "^1.1.1",
"babel-preset-stage-0": "^6.5.0",
错误
> BABEL_ENV=test nyc mocha --watch tap 'test/**/*.spec.js'
/var/www/kindred.com/node_modules/babel-core/lib/transformation/file/index.js:590
throw err;
^
SyntaxError: /var/www/kindred.com/src/components/Signin/index.js: Missing class properties transform.
17 | }
18 |
> 19 | changed = (e) => {
| ^
20 | let newDeets = {};
21 | newDeets[e.target.name] = e.target.value;
22 | this.setState(newDeets);
答
的问题是,你不告诉摩卡使用巴贝尔。您可以npm install --save-dev babel-register
和使用摩卡--require babel-register
所以你的测试命令如下所示:
"test": "BABEL_ENV=test nyc --require babel-register mocha --watch tap 'test/**/*.spec.js'",
答
巴贝尔核已经自带了,你需要用ES6运行摩卡的注册。没有必要安装它。
您应该尝试使用--compilers选项。我用下面的命令来测试我的ES6应用:
"./node_modules/.bin/mocha --timeout 0 --compilers js:babel-core/register --reporter spec"
虽然,错误给你:
SyntaxError: /var/www/kindred.com/src/components/Signin/index.js: Missing class properties transform.
可能是由于语法错误。尝试改变
changed = (e) => {
let newDeets = {};
newDeets[e.target.name] = e.target.value;
this.setState(newDeets);
};
到
changed(e) {
let newDeets = {};
newDeets[e.target.name] = e.target.value;
this.setState(newDeets);
}
对于我所知道的,ES6类语法犯规允许在类范围内创建的变量,只有函数声明。
一两件事,为了ES6与import
(而不是require
)关键字的工作,我还需要添加“0级”,我在babelrc预设。
谢谢队友:)不幸的是,这两个东西同样的错误增加了。 –