Умные люди!
Я новичок в сборщике, и у меня есть вопрос о зависимостях с косой чертой.
- На
yarn dev run
я получаю сообщение об ошибке: Не могу найти модуль '@ sveltejs / svelte-scroller' ... - У меня сапер / стройный / сверток / пряжа
- плагин svelte-scroller
Плагин по умолчанию загружается как внешний в rollup.config.js:
{ ..., server: { ..., external: <**package.json-dependencies-arr**> } ... }
И когда я использую его в .svelte-component:
import Scroller from '@sveltejs/svelte-scroller';
//...
<Scroller />
... ошибка бьет меня по лицу.
Примечания
rollup.config.js не отличается от клона шаблона
Если я удалю плагин из dependencies-arr, загруженного как внешние в rollup.config.js , ошибка исчезнет.
... который сообщает мне, что накопительный пакет не должен загружать зависимость как внешнюю (при условии, что единственной целью является устранение указанной ошибки).
И поскольку цель svelte-scroller здесь связана с взаимодействием с клиентом, я полагаю, что он в любом случае не должен быть частью пакета.
Конечно, в киберпространстве есть связанные проблемы, но я не могу найти четкого примера передовой практики, как с этим справиться.
Поэтому мой текущий обходной путь:
// in rollup.config.js import pkg from './package.json'; // filter out those "not external dependencies" const notExternals = ['@sveltejs/svelte-scroller']; const externals = Object.keys(pkg.dependencies).filter(plugin => notExternals.some(not => not === plugin) ? false : true ); export default { // ..., server: { // ..., // bundle filtered externals (along with default built in modules) external: externals.concat(require('module').builtinModules), }, // ... }
И если ошибка повторяется с другой зависимостью, я просто добавляю ее в notExternals-arr.
Вопрос
- Принимая во внимание установку sapper / svelte / rollup-setup, является ли этот подход наилучшей практикой при обработке клиентских подключаемых модулей, вызывающих аналогичные ошибки?
Заранее спасибо!
Куча
internal/modules/cjs/loader.js:896
throw err;
^
Error: Cannot find module '@sveltejs/svelte-scroller'
Require stack:
- /.../__sapper__/dev/server/server.js
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:893:15)
at Function.Module._load (internal/modules/cjs/loader.js:743:27)
at Module.require (internal/modules/cjs/loader.js:965:19)
at require (internal/modules/cjs/helpers.js:88:18)
at Object.<anonymous> (/.../__sapper__/dev/server/server.js:8:16)
at Module._compile (internal/modules/cjs/loader.js:1076:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1097:10)
at Module.load (internal/modules/cjs/loader.js:941:32)
at Function.Module._load (internal/modules/cjs/loader.js:782:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12) {
code: 'MODULE_NOT_FOUND',
requireStack: [
'/.../__sapper__/dev/server/server.js'
]
}
Воспроизвести, если осмелишься
шаблон
npx degit "sveltejs/sapper-template#rollup" <app-name>
плагин
yarn add @sveltejs/svelte-scroller
импортировать плагин в .svelte-component
<script>
import Scroller from '@sveltejs/svelte-scroller';
</script>
//...
<Scroller />
go
yarn run dev