Я создал пакет узла foo
, с {"type": "module"}
, определенным в его package.json
. Это приводит к тому, что JavaScript файлы ведут себя как модули ES6 .
Мое веб-приложение использует foo
и настроено с использованием накопительного пакета и babel. Конечно, это поддерживает модули ES6 и будет способствовать лучшей веб-поддержке. Однако он отказывается загружать мой foo
пакет, потому что
require() of ES module is not supported
.
Это сбивает меня с толку, потому что я нигде не использую require
, я используя синтаксис ES6 import
для импорта foo
. Почему накопительный пакет не может передать этот проект и как я могу это исправить?
РЕДАКТИРОВАТЬ
(я использую сапер, и вот мой rollup config)
client: {
input: config.client.input(),
output: config.client.output(),
plugins: [
replace({
'process.browser': true,
'process.env.NODE_ENV': JSON.stringify(mode)
}),
svelte({
dev,
hydratable: true,
emitCss: true
}),
resolve({
browser: true,
dedupe
}),
commonjs(),
legacy && babel({
extensions: ['.js', '.mjs', '.html', '.svelte'],
runtimeHelpers: true,
exclude: ['node_modules/@babel/**'],
presets: [
['@babel/preset-env', {
targets: '> 0.25%, not dead'
}]
],
plugins: [
'@babel/plugin-syntax-dynamic-import',
['@babel/plugin-transform-runtime', {
useESModules: true
}]
]
}),
!dev && terser({
module: true
})
],
onwarn,
},
Я полагаю, что это как-то связано с тем, что проект сначала переносится в общий js перед вводом в babel, поэтому babel видит все как общие js модули и поэтому отказ от импорта пакета ESM (модуль ES6).
EDIT 2
Примечание: серверная часть компилируется нормально, поэтому я включил только конфигурацию клиента , Вот и конфигурация сервера:
server: {
input: config.server.input(),
output: config.server.output(),
plugins: [
replace({
'process.browser': false,
'process.env.NODE_ENV': JSON.stringify(mode)
}),
svelte({
generate: 'ssr',
dev
}),
resolve({
dedupe
}),
commonjs()
],
external: Object.keys(pkg.dependencies).concat(
require('module').builtinModules || Object.keys(process.binding('natives'))
),
onwarn,
}