Получение предупреждения для исходного модуля fs не найдено

#javascript #node.js #webpack #package.json

#javascript #node.js #webpack #package.json

Вопрос:

Я пробовал различные способы, упомянутые в проблемах Github, но я не могу устранить предупреждение ниже —

Когда я это делаю yarn build , я получаю предупреждение, как показано ниже —

 WARNING in ./node_modules/adm-zip/util/fileSystem.js
Module not found: Error: Can't resolve 'original-fs' in './node_modules/adm-zip/util'
 @ ./node_modules/adm-zip/util/fileSystem.js
 @ ./node_modules/adm-zip/util/utils.js
 @ ./node_modules/adm-zip/util/index.js
 @ ./node_modules/adm-zip/adm-zip.js
  

Мой package.json выглядит следующим образом

 {
  "name": "MyApp",
  "version": "0.2.1",
  "description": "My Command Line Interface",
  "repository": "https://mylink.com/MyApp",
  "main": "myApp.js",
  "bin": {
    "myApp": "./dist/myApp.js"
  },
  "files": [
    "dist/"
  ],
  "author": "MySelf",
  "license": "UNLICENSED",
  "private": false,
  "scripts": {
    "build": "webpack --config webpack.config.js",
    "commit": "yarn git-cz",
    "commitmsg": "commitlint -e $GIT_PARAMS",
    "lint": "eslint --ext .js src",
    "lint:watch": "yarn esw -w src",
    "release": "standard-version -n",
    "start": "yarn build --watch amp; yarn test --notify --silent --watch amp; yarn lint:watch",
    "test": "jest",
    "unit:ci": "jest"
  },
  "dependencies": {
    "@angular/cli": "^7.3.4",
    "@vue/cli": "3.4.1",
    "adm-zip": "^0.4.13",
    "chalk": "2.4.2",
    "cheerio": "^1.0.0-rc.2",
    "commander": "2.19.0",
    "cross-spawn": "^6.0.5",
    "dotenv-webpack": "^1.7.0",
    "find-up": "3.0.0",
    "glob": "^7.1.3",
    "inquirer": "6.2.1",
    "inquirer-autocomplete-prompt": "1.0.1",
    "inquirer-fuzzy-path": "1.0.0",
    "log-symbols": "2.2.0",
    "ora": "3.0.0",
    "request": "^2.88.0",
    "simple-git": "^1.96.0",
    "yo": "^2.0.5"
  },
  "devDependencies": {
    "@commitlint/cli": "7.3.2",
    "@commitlint/config-conventional": "7.3.1",
    "babel-core": "^6.26.3",
    "babel-eslint": "^10.0.1",
    "babel-jest": "^23.6.0",
    "babel-preset-env": "^1.7.0",
    "command-exists": "^1.2.7",
    "commitizen": "3.0.5",
    "cz-conventional-changelog": "2.1.0",
    "debug": "^4.1.1",
    "dotenv": "^6.2.0",
    "eslint": "^5.4.0",
    "eslint-config-standard": "^12.0.0",
    "eslint-plugin-import": "^2.14.0",
    "eslint-plugin-jest": "^22.1.3",
    "eslint-plugin-node": "^8.0.1",
    "eslint-plugin-promise": "^4.0.0",
    "eslint-plugin-standard": "^4.0.0",
    "eslint-watch": "^4.0.2",
    "imports-loader": "0.8.0",
    "jest": "^23.6.0",
    "regenerator-runtime": "^0.13.1",
    "webpack": "4.29.6",
    "webpack-build-notifier": "0.1.31",
    "webpack-cli": "3.3.0",
    "yorkie": "^2.0.0",
    "lodash": "^4.17.11"
  },
  "engines": {
    "node": ">= 10.12.0",
    "npm": ">= 3.0.0",
    "yarn": ">= 1.7.0"
  },
  "config": {
    "commitizen": {
      "path": "./node_modules/cz-conventional-changelog"
    }
  },
  "gitHooks": {
    "commit-msg": "commitlint -e $GIT_PARAMS",
    "pre-commit": "yarn run lint",
    "pre-push": "yarn run lint amp;amp; yarn run test"
  }
}
  

И webpacl.config.js выглядит так, как показано ниже —

 const path = require('path')
const webpack = require('webpack')
const WebpackBuildNotifierPlugin = require('webpack-build-notifier')
const Dotenv = require('dotenv-webpack');

function srcPath (subdir) {
  return path.join(__dirname, 'src', subdir)
}

module.exports = {
  mode: 'production',
  target: 'node',
  entry: './src/myApp.js',
  output: {
    filename: 'myApp.js'
  },
  plugins: [
    new Dotenv(),
    new webpack.BannerPlugin({ banner: '#!/usr/bin/env node', raw: true }),
    new WebpackBuildNotifierPlugin({
      title: 'MyApp CLI Build',
      logo: path.resolve('./myApp-logo.png'),
      sound: false
    })
  ],
  module: {
    rules: [
      // corrects "can't resolve './rx.lite'" issue from inquirer-fuzzy-path, see:
      // https://github.com/Reactive-Extensions/RxJS/issues/1117#issuecomment-308210947
      {
        test: /rx.lite.aggregates.js/,
        use: 'imports-loader?define=>false'
      }
    ]
  }
}
  

Я пробовал следующие разные способы, но потерпел неудачу —

  • Добавлен original-fs в зависимость
  • Добавлено node: { fs: 'empty' } в webpack.config.js
  • Заменено target: 'node' на target: 'async-node'

Есть ли какие-либо другие способы решить это? Или я что-то упускаю?

Ответ №1:

Я мог бы исправить это, добавив это в свой package.json:

 "browser": {
    "original-fs": false
}
  

Комментарии:

1. Спасибо @Nikolas это довольно длинный старый вопрос, я даже не помню, где я столкнулся с этой проблемой и как я ее решил. В любом случае, давайте посмотрим, сможет ли кто-либо другой найти это полезным. Я отмечу правильно (просто пропингуйте меня или упомяните меня где-нибудь здесь в комментарии, если кто-то поддержит)