我正在使用node.js和webpack来创建一个包.根据我的阅读,node.js应包含fs用于管理文件的模块.但是,当我打电话时,require("fs")我得到一个Cannot find module "fs"错误.我该怎么办?
Joe*_*hey 41
我在捆绑webpack时遇到了这个问题并在这个帖子上找到了答案.
为我解决它的方法是使用以下配置:
module.exports = {
  entry: "./app",
  output: {
    path: __dirname,
    filename: "bundle.js"
  },
  module: {
      loaders: [
          {  
              test: /\.js$/,
              exclude: 'node_modules',
              loader: 'babel',
              query: {presets: ['es2015']},
          }
      ]
  },
  target: 'node'
};
通过将target设置为node,webpack将进行必要的更改以捆绑您的节点应用程序
编辑:这个答案针对webpack 1.x,现已被取代.
PDG*_*PDG 13
使用webworkers捆绑NWjs应用程序时,我遇到了同样的问题(后者又启用了节点).
我找到的解决方案是将我使用的每个本机模块都包含  在模块名称externals的前缀commonjs中.例如:
    ...
    target: "webworker", // or 'node' or 'node-webkit'
    externals:{
        fs:    "commonjs fs",
        path:  "commonjs path"
    }
    ...
我已经为不同项目中的目标"webworker"和"node-webkit"做了同样的事情来解决同样的问题.
webpack nwjs webworker nodejs 节点
Hem*_*ari 12
如果您在nodejs环境中运行webpack包,则在webpack.config.js文件中需要target:'node',否则webpack将默认值作为web for target check here.
您可以通过两种方式解决问题
将以下配置添加到webpack.config.js
node: {
    fs: "empty"
}
要么
将以下配置添加到package.json
"browser": {
    "fs": false
}
ash*_*deh 11
将以下配置添加到您的 webpack.config.js
resolve: {
  fallback: {
    fs: false
  }
}
在尝试了我在互联网上找到的所有内容(target, externals, nodeconfigs)后,唯一对我有用的解决方案是替换:
const filesystem = require("fs")
        or
import fs from "fs"
通过特殊的 webpack 版本
const fs = __non_webpack_require__("fs")
这会生成一个不被 webpack 解析的 require 函数。
我需要构建一个fetch在浏览器中fs执行或在 node.js 中执行时使用的类。由于其他原因,生成单独的包是不切实际的,所以我生成了一个针对浏览器的包。
我使用的解决方案是eval('require("fs")')在脚本在 node.js 中运行时使用。
const fs = eval('require("fs")')
浏览器安全(fs是null在浏览器中):
const fs = typeof window === 'object'
    ? null
    : eval('require("fs")')
| 归档时间: | 
 | 
| 查看次数: | 58195 次 | 
| 最近记录: |