我学习如何使用React,然后使用Karma作为测试运行器。我用browserify / reactify(mocha + kai)运行Karma。每当我运行npm test
时,我都会收到以下错误:
ERROR [framework.browserify]: bundle error
ERROR [framework.browserify]:
/Users/user/Projects/example-d3-react/src/d3Chart.less:1
.d3 {
^
ParseError: Unexpected token
ERROR [karma]: [TypeError: Not a string or buffer]
这发生在项目中的所有LESS文件中。我尝试将{LESS预处理器添加到karma.conf
,如下所示:
preprocessors: {
'src/*.less': ['less'],
'tests/**/*.js': ['browserify']
},
browserify: {
debug: true,
transform: [ 'reactify' ]
},
lessPreprocessor: {
options: {
paths: ['src'],
save: true,
rootpath: './'
},
additionalData: {
modifyVars: {
'bodyColor': 'grey',
'secondBoxColor': 'blue'
},
globalVars: {
'globalBoxColor': 'red'
}
},
transformPath: function(path) {
console.log("transforming");
return path.replace(/\.less$/, '.compiled.css');
}
},
答案 0 :(得分:1)
将预处理器显式添加到配置:plugins: ['karma-less-preprocessor']
答案 1 :(得分:0)
所有建议的答案都没有帮助我,但是如果有人遇到这个问题,那么对我有用的解决方案就是将项目特定的较少转换添加到package.json
文件中。 E.g:
{
...
"browserify": {
"exclude": "*.spec.js",
"transform": [
"node-lessify",
"browserify-ng-html2js"
]
},
...
}
在执行此操作时构建中断,因为我在通过NPM构建应用程序时使用cmd行转换。移除了cmd线变换部分,因为package.json
变换将应用变换programmatically,现在它再次有效。