【问题标题】:How to resolve fs.existsSync is not a function如何解决 fs.existsSync 不是函数
【发布时间】:2019-05-19 08:42:44
【问题描述】:

在 NodeJS 中我有:

const fs = require('fs');
if (!fs.existsSync("some_path")) {
...
}

但我得到了错误:

TypeError: fs.existsSync 不是函数

经过一番搜索,我读到Webpack 带来了自己的require,它破坏了node.jsrequire,所以当您需要node.js 核心模块时webpack 无法解析您的文件或依赖项之一,它会抛出。

(我的堆栈跟踪包括__webpack_require__

但是我该如何解决呢?

【问题讨论】:

  • 您是否正在编写旨在在浏览器中运行的代码?如果是这样,您希望它如何查看文件系统?
  • @MarkMeyer 不,它是 NodeJS,所以它将成为一个服务器。

标签: node.js webpack


【解决方案1】:

我遇到了同样的错误,例如 TypeError: fs.existsSync is not a function

所以,我发现自动添加了一个额外的行,这在导入时造成了这个问题。

从导入中删除此行后

import { TRUE } from "node-sass";

问题已解决。

【讨论】:

  • 这是我的问题,谢谢
  • 这对我有帮助,谢谢!我的编辑器(Visual Studio Code)不知何故神奇地在我的文件顶部插入了import { render } from 'node-sass';。 -.-
  • 我遇到了这个问题。谢谢
  • 我很高兴这个回答可以帮助您解决问题。
【解决方案2】:

我遇到了和你一样的错误。你的 vscode 可能在你的 js 文件中添加了一个新模块。删除该模块,您的应用应该可以正常工作。

【讨论】:

    【解决方案3】:

    您可以通过在配置中定位节点来允许 webpack 使用 Node 的 require 并包含 fs 等:

    module.exports = {
      entry: './src/main.js',
      target: 'node',
      output: {
        path: path.join(__dirname, 'build'),
        filename: 'backend.js'
      }
    }
    

    如此处所述:https://webpack.js.org/concepts/targets/https://webpack.js.org/configuration/target/

    【讨论】:

    • 这是您的 webpack 配置文件:webpack.js.org/configuration(在根文件夹中添加 webpack.config.js)。
    • 我正在使用使用 create-react-app 创建的模板(我认为)所以现在我有 3 个 webpack.config.js 文件:...node_modules/react-scripts/config/webpack.config.dev.js ...node_modules/react-scripts/config/webpack.config.prod.js ...node_modules/raphael/webpack.config.dev.js 我需要使用其中一个吗还是创建一个新的?
    • @Gambit2007 不确定如何配置react,抱歉。
    【解决方案4】:

    没什么好担心的,检查你的代码是否有import { types } from "node-sass";之类的东西,它会在你不知情的情况下被错误地自动导入。删除该行,一切都会正常运行。

    即使不是type,它也是来自您的node_modules 文件中的node-sass 的内容,您无法编辑该文件。 所以查找并删除import { types } from "node-sass"

    【讨论】:

      【解决方案5】:

      我正在开发一个电子应用程序,我想从节点发送一条消息并进入反应端,但是当我需要来自电子的 ipcRenderer 时,我遇到了同样的问题,我试过了 import { ipcRenderer } from 'electron'; const { ipceRenderer } = require('electron') 由于 webpack 将 node 的 require 转换为它自己的 webpack_require,这会导致错误。查看更多信息here

      对我有用的是使用

      const {ipcRenderer} = window.require('electron'); 在电子的反应侧/渲染器侧

      【讨论】:

        猜你喜欢
        • 2020-08-12
        • 2017-08-23
        • 1970-01-01
        • 1970-01-01
        • 2019-12-27
        • 2020-01-23
        • 2019-10-31
        • 2020-06-21
        • 2017-08-26
        相关资源
        最近更新 更多