我正在尝试使用 webpack 生成一个 npm 包,它将包含 ES6 级别的 JavaScript(从 TypeScript 生成),并且也将使用 ES6 模块格式,而无需转译为 ES5 和 CommonJS。(最终,除了 ES6 代码之外,我还希望在包中包含 ES5/CommonJS。)
当我尝试运行时出现此错误webpack:
[webpack-cli] 错误 [ERR_REQUIRE_ESM]:必须使用导入来加载 ES 模块:/Users/.../webpack.config.mjs
但是,如您所见,我import在我的webpack.config.mjs文件中使用,如下所示:
import { CleanWebpackPlugin } from 'clean-webpack-plugin';
import path from 'path';
const NODE_ENV = process.env.NODE_ENV || 'production';
export default {
mode: NODE_ENV,
entry: './src/index.ts',
target: 'node',
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'index.js'
},
...
我正在使用节点 v14.15.1,它应该支持 ES6 模块生成。我的package.json样子是这样的:
{
"name": "my-package",
"version": "2.0.0",
"description": "Blah, blah, blah",
"type": "module",
"module": "dist/index.js",
"scripts": {
"build": "webpack --output-module",
"prepack": "npm run build",
"prepublishOnly": "npm run build",
"lint": "eslint \"src/**/*.ts\"",
"test": "nyc --reporter=html mocha --require ts-node/register src/**/*.spec.ts",
"test-dev": "mocha --require ts-node/register -w --watch-extensions ts src/**/*.spec.ts"
},
...
"devDependencies": {
...
"webpack": "^5.10.1",
"webpack-cli": "^4.2.0",
"webpack-node-externals": "^2.5.2"
...
我已经尝试了上述的各种变体:main而不是module,main以及module,具有相同或不同的文件名(例如"module": "dist/index.esm.js")。我试过取消 webpack--output-module选项,或者使用该--experiments-output-module选项。
我发现了很多关于 的帖子ERR_REQUIRE_ESM,但没有一个专门针对我在这里尝试使用 webpack 做的事情。即使对于其他相关问题,似乎也有很多挫败感,但答案很少。