angular-cli路径必须是字符串。收到undefined

问题描述:

我更新了angular-cli版本,而我现在使用的版本是1.0.0-beta.32.3 [1.0.0-beta.26]。然而,在运行test脚本即npm run test它引发以下错误:angular-cli路径必须是字符串。收到undefined

Path must be a string. Received undefined

发现了类似的问题,开了几天前在这里:https://github.com/angular/angular-cli/issues/4815

似乎是一个的WebPack问题给我,但我可以真的没有说。我希望这可以帮助每个人都遇到同样的问题。

更新:

Path must be a string. Received undefined 
TypeError: Path must be a string. Received undefined 
    at assertPath (path.js:7:11) 
    at Object.resolve (path.js:1146:7) 
    at getWebpackTestConfig (/usr/lib/node_modules/angular-cli/models/webpack-build-test.js:131:25) 
    at init (/usr/lib/node_modules/angular-cli/plugins/karma.js:45:25) 
    at Array.invoke (/home/umair/workspace/ng-portal/node_modules/di/lib/injector.js:75:15) 
    at Injector.get (/home/umair/workspace/ng-portal/node_modules/di/lib/injector.js:48:43) 
    at /home/umair/workspace/ng-portal/node_modules/karma/lib/server.js:143:20 
    at Array.forEach (native) 
    at Server._start (/home/umair/workspace/ng-portal/node_modules/karma/lib/server.js:142:21) 
    at Injector.invoke (/home/umair/workspace/ng-portal/node_modules/di/lib/injector.js:75:15) 
    at Server.start (/home/umair/workspace/ng-portal/node_modules/karma/lib/server.js:103:18) 
    at Promise (/home/umair/workspace/ng-portal/node_modules/@angular/cli/tasks/test.js:34:25) 
    at Class.run (/home/umair/workspace/ng-portal/node_modules/@angular/cli/tasks/test.js:15:16) 
    at Class.run (/home/umair/workspace/ng-portal/node_modules/@angular/cli/commands/test.js:38:25) 
    at Class.<anonymous> (/home/umair/workspace/ng-portal/node_modules/@angular/cli/ember-cli/lib/models/command.js:134:17) 
    at process._tickCallback (internal/process/next_tick.js:103:7) 

角cli.json

{ 
    "project": { 
    "version": "1.0.0-beta.26", 
    "name": "ng-portal" 
    }, 
    "apps": [ 
    { 
     "root": "src", 
     "outDir": "dist", 
     "assets": [ 
     "assets", 
     "favicon.ico" 
     ], 
     "index": "index.html", 
     "main": "main.ts", 
     "test": "test.ts", 
     "tsconfig": "tsconfig.json", 
     "prefix": "app", 
     "mobile": false, 
     "styles": [ 
     "styles.css", 
     "../node_modules/bootstrap/dist/css/bootstrap.min.css", 
     "../node_modules/font-awesome/css/font-awesome.css" 
     ], 
     "scripts": [], 
     "environmentSource": "environments/environment.ts", 
     "environments": { 

     "dev": "environments/environment.ts", 
     "prod": "environments/environment.prod.ts" 
     } 
    } 
    ], 
    "addons": [ 
    "../node_modules/font-awesome/fonts/*.+(otf|eot|svg|ttf|woff|woff2)" 
], 
    "e2e": { 
    "protractor": { 
     "config": "./protractor.conf.js" 
    } 
    }, 
    "test": { 
    "karma": { 
     "config": "./karma.conf.js" 
    } 
    }, 
    "defaults": { 
    "styleExt": "css", 
    "prefixInterfaces": false, 
    "inline": { 
     "style": false, 
     "template": false 
    }, 
    "spec": { 
     "class": false, 
     "component": true, 
     "directive": true, 
     "module": false, 
     "pipe": true, 
     "service": true 
    } 
    } 
} 
+0

哪条路径必须是字符串? – sandrooco

+0

上次我看到这个错误时,我试图加载一个我没有放进.angular-cli.json环境数组中的自定义环境。您是否在代码中使用自定义环境?编辑 - 另外,它可能就像你不小心删除了environment.test.ts文件一样简单 – peppermcknight

+0

@Sandrooco添加了完整的错误跟踪。 – Umair

我有同样的问题,更新karma.conf.js固定它,如下解释:https://github.com/angular/angular-cli/issues/4815

angular-cli替换为@angular/cli i你应该很好走。