【发布时间】:2015-02-26 12:00:36
【问题描述】:
我正在学习如何使用 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 文件上。我曾尝试向 karma.conf 添加 LESS 预处理器,如下所示:
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');
}
},
【问题讨论】:
-
应该
'src/*.less': ['less'],可能是'src/*.less': [lessPreprocessor'], -
@BassJobsen 只是尝试过但无济于事,业力预处理器被称为 less afaik。有什么方法可以让 browserify 在代码中以编程方式忽略
require('d3.less'),例如将其设置为忽略的 JSHint 注释? -
您是否在 conf 中的某处定义了
plugins: ['karma-less-preprocessor']? -
@Eelke 我没有定义
plugins:,它会自动拉入它们。添加 'plugins: ['karma-less-preprocessor']' 需要我现在添加之前自动加载的所有插件(即karma-browserify),但您的修复确实有效。添加作为获得赏金的答案:) -
我希望您的 *.less 是由其他预处理器意外编译的。 Less 编译器会抛出一个不同的错误,例如
ERROR [preprocessor:less]: Error:Error: missing closing }。npm test运行哪个命令(请参阅您的 Gulpfile.js),可能类似于node node_modules/karma/bin/karma start karma.conf.js,确保业力使用了正确的karma.conf.js文件
标签: less karma-runner reactjs browserify