“fs.existsSync不是一个函数”,没有触及任何相关的东西

时间:2017-09-01 15:59:12

标签: node.js angular typescript angular-ui-bootstrap

我正在使用angular2构建一个小型Web应用程序,目前唯一的依赖是导航栏的引导程序。有一天,一切正常(包括我可以看到我的导航栏),有一天我在另一台机器上克隆我的仓库,运行npm installng serve,添加一些组件/服务并突然结束在浏览器中没有加载站点和此堆栈跟踪(编译成功但没有错误):

Uncaught TypeError: fs.existsSync is not a function
    at devmode.js:33
    at Object.<anonymous> (devmode.js:34)
    at Object.__webpack_require__.constructor.oneshot.fn (devmode.js:34)
    at __webpack_require__ (bootstrap 5d37cea67e603e9113e4:52)
    at Object.<anonymous> (http.js:32)
    at Object.<anonymous> (http.js:567)
    at __webpack_require__ (bootstrap 5d37cea67e603e9113e4:52)
    at Object.<anonymous> (index.js:29)
    at Object.<anonymous> (index.js:255)
    at __webpack_require__ (bootstrap 5d37cea67e603e9113e4:52)
    at Object.171 (quote.service.ts:7)
    at __webpack_require__ (bootstrap 5d37cea67e603e9113e4:52)
    at Object.170 (routing.module.ts:37)
    at __webpack_require__ (bootstrap 5d37cea67e603e9113e4:52)
    at Object.90 (best.component.ts:8)
    at __webpack_require__ (bootstrap 5d37cea67e603e9113e4:52)
    at Object.168 (app.component.ts:8)
    at __webpack_require__ (bootstrap 5d37cea67e603e9113e4:52)
    at Object.157 (src async:7)
    at __webpack_require__ (bootstrap 5d37cea67e603e9113e4:52)
    at Object.342 (main.bundle.js:549)
    at __webpack_require__ (bootstrap 5d37cea67e603e9113e4:52)
    at webpackJsonpCallback (bootstrap 5d37cea67e603e9113e4:23)
    at main.bundle.js:1
(anonymous) @ devmode.js:33
(anonymous) @ devmode.js:34
__webpack_require__.constructor.oneshot.fn @ devmode.js:34
__webpack_require__ @ bootstrap 5d37cea67e603e9113e4:52
(anonymous) @ http.js:32
(anonymous) @ http.js:567
__webpack_require__ @ bootstrap 5d37cea67e603e9113e4:52
(anonymous) @ index.js:29
(anonymous) @ index.js:255
__webpack_require__ @ bootstrap 5d37cea67e603e9113e4:52
171 @ quote.service.ts:7
__webpack_require__ @ bootstrap 5d37cea67e603e9113e4:52
170 @ routing.module.ts:37
__webpack_require__ @ bootstrap 5d37cea67e603e9113e4:52
90 @ best.component.ts:8
__webpack_require__ @ bootstrap 5d37cea67e603e9113e4:52
168 @ app.component.ts:8
__webpack_require__ @ bootstrap 5d37cea67e603e9113e4:52
157 @ src async:7
__webpack_require__ @ bootstrap 5d37cea67e603e9113e4:52
342 @ main.bundle.js:549
__webpack_require__ @ bootstrap 5d37cea67e603e9113e4:52
webpackJsonpCallback @ bootstrap 5d37cea67e603e9113e4:23
(anonymous) @ main.bundle.js:1

在看到错误一次之后,如果我推动&amp;拉,虽然在我添加的内容相关逻辑之外没有任何改变。

到目前为止,我的研究主要向我展示了与电子有关的问题,我没有使用这些问题,或者我没有做过的文件系统操作。我错过了一些明显的东西吗?

我已经做了通常的解决方法,例如删除node_modules&amp;重新运行npm i,我在npm版本5.4.0和节点8.4.0,我使用当前版本的WebStorm-IDE。

1 个答案:

答案 0 :(得分:0)

如果相同的代码库之前工作正常并且稍后失败:似乎问题是在两种情况下都安装了NPM软件包的实际版本。

例如:

  • 我使用了NPM软件包,说specialPackage版本为3.1.0
  • package.json中,我将其用作~3.1.0
  • 第二天,specialPackage的作者发布了一个新的补丁(3.1.1)并进行了一些重大改变
  • 这天我在另一台机器上试用了我的应用程序。相同的package.json安装3.1.1而不是3.1.0
  • 如果第三方NPM程序包中存在任何问题,则应用程序可能会关闭。

我们如何解决这个问题?

  • NPM&lt; 5.0:一种方法是始终使用~中没有^package.json的精确NPM包版本
  • NPM&gt; = 5.0:将生成新的package-log.json文件。我们需要将它添加到我们的存储库中,以便我们期望我们期望的NPM包的确切版本。

您可以尝试

  • 正如您所说,您正在使用NPM >= 5.0,您是否在存储库中有package-lock.json(其中package-lock.json是在应用程序正常运行的情况下创建的)
  • 如果没有,请尝试从其他计算机提交package-lock.json,然后再次尝试npm i
  • 尝试在package.json中使用准确的NPM包版本(删除所有~^
  • 您是否在两台计算机上使用相同版本的@angular/cli全局程序包?