我正在使用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'
};
Run Code Online (Sandbox Code Playgroud)
通过将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"
}
...
Run Code Online (Sandbox Code Playgroud)
我已经为不同项目中的目标"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"
}
Run Code Online (Sandbox Code Playgroud)
要么
将以下配置添加到package.json
"browser": {
"fs": false
}
Run Code Online (Sandbox Code Playgroud)
ash*_*deh 11
将以下配置添加到您的 webpack.config.js
resolve: {
fallback: {
fs: false
}
}
Run Code Online (Sandbox Code Playgroud)
在尝试了我在互联网上找到的所有内容(target, externals, nodeconfigs)后,唯一对我有用的解决方案是替换:
const filesystem = require("fs")
or
import fs from "fs"
Run Code Online (Sandbox Code Playgroud)
通过特殊的 webpack 版本
const fs = __non_webpack_require__("fs")
Run Code Online (Sandbox Code Playgroud)
这会生成一个不被 webpack 解析的 require 函数。
我需要构建一个fetch在浏览器中fs执行或在 node.js 中执行时使用的类。由于其他原因,生成单独的包是不切实际的,所以我生成了一个针对浏览器的包。
我使用的解决方案是eval('require("fs")')在脚本在 node.js 中运行时使用。
const fs = eval('require("fs")')
Run Code Online (Sandbox Code Playgroud)
浏览器安全(fs是null在浏览器中):
const fs = typeof window === 'object'
? null
: eval('require("fs")')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
58195 次 |
| 最近记录: |