Kii*_*iim 3 node.js rollupjs yarnpkg svelte sapper
聪明的人!
\n我\xe2\x80\x99m 是一个捆绑器初学者,有一个捆绑器斜杠依赖问题。
\nyarn dev run错误:“找不到模块 \'@sveltejs/svelte-scroller\'...”该插件默认在 rollup.config.js 中作为外部加载:
\n{ ..., server: { ..., external: <**package.json-dependencies-arr**> } ... }\nRun Code Online (Sandbox Code Playgroud)\n当我在 .svelte-component 中使用它时:
\nimport Scroller from \'@sveltejs/svelte-scroller\';\n\n//...\n\n<Scroller />\nRun Code Online (Sandbox Code Playgroud)\n...这个错误打了我的脸。
\nrollup.config.js 与模板克隆相比没有变化
\n如果我从在 rollup.config.js 中作为外部加载的依赖项 arr 中删除插件,错误就会消失。
\n...这告诉我汇总不应将依赖项作为外部加载(假设唯一的目标是使指定的错误消失)。
\n由于 svelte-scroller 的用途与客户端交互相关,因此我认为无论如何它都不应该成为捆绑包的一部分。
\n当然,网络空间也有相关的问题,但我似乎找不到关于如何处理这个问题的明确的最佳实践示例。
\n因此,我当前的解决方法是:
\n // in rollup.config.js\n import pkg from \'./package.json\';\n\n // filter out those "not external dependencies" \n const notExternals = [\'@sveltejs/svelte-scroller\'];\n const externals = Object.keys(pkg.dependencies).filter(plugin =>\n notExternals.some(not => not === plugin) ? false : true\n );\n\n export default {\n // ...,\n server: {\n // ...,\n // bundle filtered externals (along with default built in modules)\n external: externals.concat(require(\'module\').builtinModules),\n },\n // ...\n }\nRun Code Online (Sandbox Code Playgroud)\n如果错误再次出现在另一个依赖项中,我只需将其添加到 notExternals-arr 中。
\n提前致谢!
\ninternal/modules/cjs/loader.js:896\n throw err;\n ^\n\nError: Cannot find module \'@sveltejs/svelte-scroller\'\nRequire stack:\n\n - /.../__sapper__/dev/server/server.js\n at Function.Module._resolveFilename (internal/modules/cjs/loader.js:893:15)\n at Function.Module._load (internal/modules/cjs/loader.js:743:27)\n at Module.require (internal/modules/cjs/loader.js:965:19)\n at require (internal/modules/cjs/helpers.js:88:18)\n at Object.<anonymous> (/.../__sapper__/dev/server/server.js:8:16)\n at Module._compile (internal/modules/cjs/loader.js:1076:30)\n at Object.Module._extensions..js (internal/modules/cjs/loader.js:1097:10)\n at Module.load (internal/modules/cjs/loader.js:941:32)\n at Function.Module._load (internal/modules/cjs/loader.js:782:14)\n at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12) {\n code: \'MODULE_NOT_FOUND\',\n requireStack: [\n \'/.../__sapper__/dev/server/server.js\'\n ]\n}\nRun Code Online (Sandbox Code Playgroud)\n模板
\nnpx degit "sveltejs/sapper-template#rollup" <app-name>\nRun Code Online (Sandbox Code Playgroud)\n插入
\nyarn add @sveltejs/svelte-scroller\nRun Code Online (Sandbox Code Playgroud)\n将插件导入到 .svelte-component
\n<script>\n import Scroller from \'@sveltejs/svelte-scroller\';\n</script>\n\n//...\n\n<Scroller />\nRun Code Online (Sandbox Code Playgroud)\n去
\nyarn run dev\nRun Code Online (Sandbox Code Playgroud)\n
因为@sveltejs/svelte-scroller是 Svelte 组件而不是 JS 模块,所以它必须在构建时由 Svelte 编译器处理,而不是在运行时导入。换句话说,它应该是您的捆绑包的一部分。
如果 的内容dependencies被视为,则执行此操作的传统方法external是将包添加到devDependencies:
yarn add -D @sveltejs/svelte-scroller
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1717 次 |
| 最近记录: |