【问题标题】:How to resolve the "Module not found: Error: Can't resolve 'fs'" in nuxt.js?如何解决 nuxt.js 中的“Module not found: Error: Can't resolve 'fs'”?
【发布时间】:2019-05-28 20:46:23
【问题描述】:

我对节点有点陌生,但是从大量搜索来看,'fs' 似乎在过去破坏了很多东西。我遇到了几个尝试通过 npm 安装的软件包,并且遇到了太多的 Module not found: Error: Can't resolve 'fs' 错误。

我已经运行了 npm install,fs 下载了一个placeholder package,但我真的停了下来,因为一个包(在几个包中)仍然依赖于 fs。

几乎 every solutionfind 导致在 webpack 设置的节点部分中将 fs 声明为空:

node: {
  fs: 'empty'
},

不幸的是,我使用的是 Vue.js 和 nuxt,并且没有 webpack 设置文件(据我所知)。我试图将它添加到我的 nuxt_config.js 中,但没有成功。 扩展(配置,ctx){ 配置节点 = { fs:“空” }; }

有没有办法在 nuxt_config 中运行排除?另外,有没有办法运行它,同时仍然保留我的设置以在保存时运行 eslint?

extend(config, ctx) {
  // Run ESLint on save
  if (ctx.isDev && ctx.isClient) {
    config.module.rules.push({
      enforce: 'pre',
      test: /\.(js|vue)$/,
      loader: 'eslint-loader',
      exclude: /(node_modules)/
    })
  }
}

谢谢。

【问题讨论】:

    标签: node.js vue.js nuxt.js


    【解决方案1】:

    用法可能因版本而异。

    就我而言,我必须用“=”字符来定义 confing.node。

        build: {
            extend (config, { isDev, isClient }) { 
                config.node = {
                    fs: "empty"
                }
            })
        }
    
    

    【讨论】:

      【解决方案2】:

      以防万一。在我的情况下,这个错误突然出现并且无法说明原因。在尝试了一切(删除和重新安装 npm 包等)之后,我发现 VS CODE 自动引用了我刚刚保存的文件中的一个包,我没有注意到。

      就我而言,它添加了 import { query } from 'express'.

      删除该行,一切都恢复正常。

      【讨论】:

      • 你刚刚拯救了我的一天......或一周。完全相同的事情发生在我身上,我一直在疯狂地重新安装和删除东西。非常感谢纳丁!
      【解决方案3】:

      建议是正确的,根据webpack看到documentation你应该将fs模块设置为'empty'

      您是否尝试将其插入到构建块中顶级配置的 nuxt 配置中?

      build: {
        extend (config, { isDev, isClient }) {
      
           config.node: {
              fs: 'empty'
            }
      
           // ....
        }
      }
      

      【讨论】:

      • 非常感谢,@adamrights。我以为我已经按照您介绍的方式完成了,但显然,我没有 - 它按照您介绍的方式正常工作。我可以问一个后续问题:有没有办法将您拥有的内容与我的 eslint-on-save 设置 if (ctx.isDev... 上面的扩展块内结合起来?
      • { isDev, isClient } 是您示例中的 ctx 对象。 try... build: { ... // EXTEND extend (config, { isClient }) { if (isClient) { config.module.rules.push({ enforce: 'pre', test: /\.js$/ ,加载器:'eslint-loader',排除:/(node_modules)/,},{强制:'pre',测试:/\.vue$/,加载器:'eslint-loader',排除:/(node_modules)/ , }) } } },
      • 谢谢 - 我能够得到它......意识到我只是使用逗号分隔两个部分,我需要删除它。非常感谢您的帮助!
      猜你喜欢
      • 2020-12-03
      • 1970-01-01
      • 2020-04-07
      • 1970-01-01
      • 1970-01-01
      • 2021-12-19
      • 1970-01-01
      • 2019-03-11
      • 2019-01-14
      相关资源
      最近更新 更多