js.commonjs-require-cwd 参数应该怎么设置
时间: 2023-08-03 22:03:30 浏览: 172
`js.commonjs-require-cwd` 参数用于指定 CommonJS 模块的当前工作目录。默认情况下,该参数设置为 `false`,表示使用 Node.js 的默认行为。如果需要自定义当前工作目录,可以将该参数设置为一个字符串,表示当前工作目录的绝对路径。
例如,如果你的项目文件结构如下:
```
my-project/
├── node_modules/
├── src/
│ ├── index.js
│ └── utils/
│ └── helper.js
└── package.json
```
其中,`index.js` 文件中使用了 `helper.js` 模块:
```js
const helper = require('./utils/helper');
```
如果你想要在 Webpack 中模拟 Node.js 的 `__dirname` 行为,可以将 `js.commonjs-require-cwd` 参数设置为 `__dirname`,如下所示:
```js
module.exports = {
// ...
module: {
rules: [
{
test: /\.js$/,
loader: 'babel-loader',
options: {
presets: ['@babel/preset-env'],
},
},
],
},
resolve: {
fallback: {
path: require.resolve('path-browserify'),
},
},
experiments: {
asyncWebAssembly: true,
},
output: {
globalObject: 'this',
},
// 设置 js.commonjs-require-cwd 参数
// 表示使用当前文件所在的目录作为 CommonJS 模块的当前工作目录
// 这样可以模拟 Node.js 的 __dirname 行为
experiments: {
asyncWebAssembly: true,
},
output: {
globalObject: 'this',
},
// 设置 js.commonjs-require-cwd 参数
// 表示使用当前文件所在的目录作为 CommonJS 模块的当前工作目录
// 这样可以模拟 Node.js 的 __dirname 行为
node: {
__dirname: true,
},
// ...
};
```
这样,在 Webpack 中编译 `index.js` 文件时,`helper.js` 模块的路径就会根据 `index.js` 文件所在的目录来解析。如果 `js.commonjs-require-cwd` 参数设置为 `false`,则 `helper.js` 模块的路径会根据 Webpack 的当前工作目录来解析,可能会导致路径不正确的问题。
阅读全文