我正在使用 Jasmine(准确地说是 jasmine-es6:https ://github.com/vinsonchuong/jasmine-es6 )运行单元测试,并希望将 Jasmine 配置为使用绝对路径。
在浏览我的脚本时,我将 Grunt 配置为使用“app”路径作为源文件的根目录。在浏览器中加载此类浏览器化脚本后,它可以正常工作。这是我的 Gruntfile 的一部分:
Gruntfile.js
newUIContentScript: {
options: {
transform: [
['babelify', {
presets: ['es2015', 'react'],
plugins: ["transform-object-rest-spread"],
babelrc: false,
sourceMaps: true
}]
],
browserifyOptions: {
paths: ["./app"] // enables using absolute paths with ./app as root
}
},
src: [
'app/scripts-old/*.js'
'app/scripts-new/*.js', // and new UI scripts
'app/common/*.js',
],
dest: '<%= config.srcBundle %>/newScriptBundle.js'
},
这样我就可以在 JS 文件中的 ES6 样式导入中使用绝对路径:
app/scripts-old/application.js
import MyReducer from "scripts-new/Reducer";
import MyEventNames from "common/MyEventNames";
而是相对路径:
app/scripts-old/application.js
import MyReducer from "../scripts-new/Reducer";
import MyEventNames from "../common/MyEventNames";
现在,当我运行 Jasmine 测试时,出现以下错误:
Error: Cannot find module 'scripts-new/Reducer'
at Module._resolveFilename (module.js:469:15)
at Function.Module._resolveFilename (<project>\node_modules\register-module\index.js:18:10)
at Function.Module._load (module.js:417:25)
at Module.require (module.js:497:17)
at require (internal/module.js:20:19)
at Object.<anonymous> (<project>/spec/app/new-scripts/ReducerSpec.js:1:1)
at Module._compile (module.js:570:32)
at loader (<project>\node_modules\babel-register\lib\node.js:144:5)
at Object.require.extensions.(anonymous function) [as .js] (<project>\node_modules\babel-register\lib\node.js:154:7)
at Module.load (module.js:487:32)
我使用默认的 jasmine.json 配置文件。我看不到任何配置选项来设置我在项目中使用绝对路径的方式。我不想回退到使用相对路径,因为绝对路径使我的导入不可读(项目结构要复杂得多,这是简化的示例)。
还有其他测试 ES6 导入的方法吗?是否可以以其他方式配置路径?