gpt4 book ai didi

javascript - webpack: "[ERR_REQUIRE_ESM]: Must use import to load ES Module"- 但我正在使用导入!

转载 作者:行者123 更新时间:2023-12-03 17:09:53 28 4
gpt4 key购买 nike

我正在尝试使用 webpack 生成一个 npm 包,其中将包含 ES6 级别的 JavaScript(从 TypeScript 生成),并且也将使用 ES6 模块格式,而无需转译为 ES5 和 CommonJS。 (最终,除了 ES6 代码之外,我还希望在包中包含 ES5/CommonJS。)
当我尝试运行 webpack 时出现此错误:

[webpack-cli] Error [ERR_REQUIRE_ESM]: Must use import to load ES Module: /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 做的事情。即使对于其他相关问题,似乎也有很多挫败感,但答案很少。

最佳答案

我通过迁移到 typescript 解决了这个问题文件类型和方法。令人惊讶的是它的工作原理:package.json

{ 
...
"type": "module",
...
}
babel.config.ts
export default api => {
api.cache(true)
return {
presets: ['...'],
plugins: ['...'],
env: { '...': '...' },
}
}
webpack.common.ts
import { common } from './webpack.common'
import webpack from 'webpack'
...

export default {
entry: {
'...': '...',
},
output: {
'...': '...',
},
resolve: {
extensions: ['.ts', '.tsx', '.js', '.jsx', '.json'],
},
module: {
rules: [
{
test: /\.(js|jsx|ts|tsx)$/i,
exclude: /node_modules/,
use: [
{
loader: 'babel-loader',
options: {
cacheDirectory: true,
presets: [
[
'@babel/preset-env',
{
'...': '...',
},
],
'@babel/preset-react',
'@babel/typescript',
],
plugins: [
['babel-plugin-transform-require-ignore', {}],
'@babel/plugin-proposal-class-properties',
'@babel/plugin-proposal-object-rest-spread',
],
},
},
],
},
'...'
],
},
}
tsconfig.json
{
"compilerOptions": {
"...": "..."
},
"include": ["..."],
"exclude": ["..."],
"linterOptions": {
"exclude": ["..."]
},
"defaultSeverity": "..."
}

关于javascript - webpack: "[ERR_REQUIRE_ESM]: Must use import to load ES Module"- 但我正在使用导入!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65300985/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com