首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用业力-系统for为依赖关系生成404。

使用业力-系统for为依赖关系生成404。
EN

Stack Overflow用户
提问于 2016-03-01 16:42:08
回答 1查看 1.1K关注 0票数 3

我在我的应用程序上设置单元测试。我的基本测试规范,project.spec.ts,看起来就像

代码语言:javascript
复制
import {Project} from './project';

describe('Project', () => {
    let p = new Project('New project');

    it('should have the name given in the constructor', () => {
        expect(p.name).toBe('New project');
    });
});

Project是我正在测试的类的名称,它是在文件app/entities/project.ts中定义的(即在同一个文件夹中)。

但是,每当测试规范试图导入另一个文件时,业力就会产生404错误:

代码语言:javascript
复制
01 03 2016 17:21:04.955:WARN [web-server]: 404: /base/app/entities/project
Chrome 48.0.2564 (Windows 10 0.0.0) ERROR
  Error: XHR error (404 Not Found) loading C:/Dev/mps/app/entities/project
        Error loading C:/Dev/mps/app/entities/project as "./project" from C:/Dev/mps/app/entities/project.spec.js

编译后的文件project.spec.js看起来是正确加载的,但是文件project.js无法加载。此外,我也不明白/base/前缀在/base/app/entities/project中来自何处。

一个类似的案例被描述为这里。然而,提议的解决办法对我不起作用。以下两种进口变体都不起作用:

代码语言:javascript
复制
let Project = require('./project');
let Project = System.import('./project'); // produces "404: /project" instead
let Project = require('./project.js');
let Project = System.import('./project.js');

我的心声是:

karma.conf.js

代码语言:javascript
复制
module.exports = function(config) {
  config.set({
    basePath: '',
    plugins: ['karma-systemjs', 'karma-jasmine', 'karma-chrome-launcher'],
    frameworks: ['systemjs', 'jasmine'],
    systemjs: {
        configFile: 'system.conf.js'
    },
    files: [
      'app/entities/project.spec.js'
    ],
    exclude: [ ],
    preprocessors: { },
    reporters: ['progress'],
    port: 9876,
    colors: true,
    logLevel: config.LOG_INFO,
    autoWatch: true,
    browsers: ['Chrome'],
    singleRun: false,
    concurrency: Infinity
  })
}

system.conf.js

代码语言:javascript
复制
System.config({
    paths: {
        'traceur': 'node_modules/traceur/bin/traceur.js',
        'systemjs': 'node_modules/systemjs/dist/system.js',
        'system-polyfills': 'node_modules/systemjs/dist/system-polyfills.js',
        'es6-module-loader': 'node_modules/es6-module-loader/dist/es6-module-loader.js'
    }
});

我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-02 13:15:31

明白了。必须将引用的文件提供给SystemJS。这可以通过参数systemjs.serveFileskarma.conf.js中完成。

代码语言:javascript
复制
systemjs: {
  serveFiles: [
    'app/entities/project.js'
  ]
}

一个更好的方法是使用globs来配置这个参数一次:

代码语言:javascript
复制
systemjs: {
  serveFiles: [
    'node_modules/**/*.js',
    'app/**/*.js'
  ]
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35728497

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档