【问题标题】:Getting very weird error while using angular/cli version 1.0.0-beta.28.3使用 angular/cli 版本 1.0.0-beta.28.3 时出现非常奇怪的错误
【发布时间】:2017-08-26 01:15:04
【问题描述】:

尝试为应用程序提供服务时发送此错误

86% hashingcrypto.js:74 this._handle.update(data, encoding); ^ TypeError: 数据必须是字符串或缓冲区 在 TypeError (本机) 在 Hash.update (crypto.js:74:16) 在 HarmonyExportImportedSpecifierDependency.updateHash (C:\Users\seanr\projects\DerrickAlphaFebTest\angular-src\node_modules\@angular\cli\node_modules\webpack\lib\dependencies\HarmonyExportImportedSpecifierDependency.js:144:8) 在 C:\Users\seanr\projects\DerrickAlphaFebTest\angular-src\node_modules\@angular\cli\node_modules\webpack\lib\DependenciesBlock.js:33:5 在 Array.forEach (本机) 在 NormalModule.DependenciesBlock.updateHash (C:\Users\seanr\projects\DerrickAlphaFebTest\angular-src\node_modules\@angular\cli\node_modules\webpack\lib\DependenciesBlock.js:32:20) 在 NormalModule.Module.updateHash (C:\Users\seanr\projects\DerrickAlphaFebTest\angular-src\node_modules\@angular\cli\node_modules\webpack\lib\Module.js:162:41) 在 NormalModule.updateHash (C:\Users\seanr\projects\DerrickAlphaFebTest\angular-src\node_modules\@angular\cli\node_modules\webpack\lib\NormalModule.js:327:30) 在 modules.forEach.m (C:\Users\seanr\projects\DerrickAlphaFebTest\angular-src\node_modules\@angular\cli\node_modules\webpack\lib\Chunk.js:253:31) 在 Array.forEach (本机) 在 Chunk.updateHash (C:\Users\seanr\projects\DerrickAlphaFebTest\angular-src\node_modules\@angular\cli\node_modules\webpack\lib\Chunk.js:253:16) 在 Compilation.createHash (C:\Users\seanr\projects\DerrickAlphaFebTest\angular-src\node_modules\@angular\cli\node_modules\webpack\lib\Compilation.js:1121:10) 在 sealPart2 (C:\Users\seanr\projects\DerrickAlphaFebTest\angular-src\node_modules\@angular\cli\node_modules\webpack\lib\Compilation.js:605:9) 在下一个(C:\Users\seanr\projects\DerrickAlphaFebTest\angular-src\node_modules\tapable\lib\Tapable.js:138:11) 在编译。 (C:\Users\seanr\projects\DerrickAlphaFebTest\angular-src\node_modules\@angular\cli\node_modules\webpack\lib\ProgressPlugin.js:110:5) 在下一个 (C:\Users\seanr\projects\DerrickAlphaFebTest\angular-src\node_modules\tapable\lib\Tapable.js:140:14)

【问题讨论】:

  • 这样的问题很难调试。库和节点版本有很多依赖关系(这是什么?)。最好的办法是一件一件地取出东西,直到它停止破裂为止;或者,反过来,通过启动一个新应用程序,然后一个接一个地添加内容,直到它停止工作。首先要尝试将 angular-cli 升级到 1.0.0。
  • 可能与此有关:github.com/webpack/webpack/issues/4072 ?请参阅 cmets。

标签: javascript node.js angular-cli


【解决方案1】:

您可以通过手动编辑以下文件来改进错误消息:node_modules/webpack/lib/dependencies/HarmonyExportImportedSpecifierDependency.js 并在第 144 行插入一些日志:

     updateHash(hash) {
      super.updateHash(hash);
      const hashValue = this.getHashValue(this.importDependency.module);
      if (this.importDependency.module != null){
         // console.log('Module resource: ',       this.importDependency.module.resource);
      }else{
         console.log('\nFile not found: ', this.importDependency);
      }
      hash.update(hashValue);
   }

然后你可以得到清晰的错误信息

86% hashing                                  
File not found:  HarmonyImportDependency {
module: null,
request: '@angular/cdk/a11y',
userRequest: '@angular/cdk/a11y',
range: [ 237, 339 ],
importedVar: '__WEBPACK_IMPORTED_MODULE_1__angular_cdk_a11y__',
loc: 
SourceLocation {
 start: Position { line: 9, column: 0 },
 end: Position { line: 9, column: 102 } } }
crypto.js:97
this._handle.update(data, encoding);

然后搜索request中指定的文件,这里是@angular/cdk/a11y

在我的情况下,我发现名为 @angular/cdk/a11y 的文件丢失了。我安装了丢失的文件以使其正常工作

参考:Thanks to toub's answer in github

【讨论】:

    【解决方案2】:

    我发现我刚刚开始了一个新项目并复制了 package.json 和 node_modules 并修复了所有问题。

    【讨论】:

    • 它取决于 @ngtools/webpack 版本,角度选择安装在其 node_modules 文件夹中。我在 Angular 项目中遇到了同样的问题,我在 devDependencies 上添加了包“”:“1.4.0”。 (我们增加了角度选择安装作为他的依赖项的版本)并且这个通用错误消失了,并且项目导入/导出错误被显示
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-15
    • 2018-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-19
    • 1970-01-01
    相关资源
    最近更新 更多