如果发生fs错误,如何使用antlr?

时间:2019-02-18 20:04:35

标签: angular typescript visual-studio-code antlr4

我实际上对antlr有问题。我在Visual Studio代码中使用angular。我知道如何在项目中包括和编写语法。但是,现在我遇到了启动它时发生错误的问题:

“ ./ node_modules / antlr4 / CharStreams.js中的错误 找不到模块:错误:无法解析“ C:\ Users \ simon \ antlrTestProject \ node_modules \ antlr4”中的“ fs” ./node_modules/antlr4/FileStream.js中的错误 找不到模块:错误:无法解析'C:\ Users \ simon \ antlrTestProject \ node_modules \ antlr4'中的'fs'“

我发现在角度6+中fs不再可用。不幸的是,我发现无法解决这个问题。

2 个答案:

答案 0 :(得分:0)

为了在node.js之外使用ANTLR JavaScript运行时,您需要配置webpack以排除node.js中存在的某些模块,而不是浏览器中存在的某些模块。来自the docs

  

在webpack.config文件中,使用以下命令排除仅node.js模块:node: { module: "empty", net: "empty", fs: "empty" }

答案 1 :(得分:0)

如果建议的解决方案不起作用,那么如果它是一个有角度的CLI项目,那么有一个不被推荐的解决方案对我有用。

转到node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/webpack-configs/browser.js

有一个带有键值的json:

node: null

将其更改为:

node: { fs: "empty" }

这显然是一个可怕的解决方案,因为:

  • 每次更新该软件包时,都必须进行更改;
  • 您的团队必须意识到这一变化并加以应用

如果有一种方法可以迫使这种改变,那将是一个更可行的解决方案