我正在使用 SnowPack 3.3.7(虽然snowpack --version
说是 3.3.6)。我已经在全球范围内安装了它。
运行时一切工作文件snowpack dev
。
当我跑步时snowpack build
,我得到了Do not know how to load path build/_snowpack/pkg/date-fns
。
date-fns
是 SkyPack 提供的一个库,所以我选择了它。
这是我的snowpack.config.js
:
module.exports = {
mount: {
"sourcecode": "/"
},
optimize: {
minify: true,
treeshake: true,
target: 'es2020'
},
packageOptions: {
source: "remote"
},
buildOptions: {
clean: true
},
};
这里是/sourcecode/index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<h1>Snowpack Lab</h1>
<button id="actionButton">Say Hello</button>
<script type="module" src="./index.js"></script>
</body>
</html>
然后/sourcecode/index.js
import { format } from 'date-fns';
export function sayHello() {
let dateString = format(new Date(), 'MMMM dd, yyyy');
alert(`Hello. Today is ${dateString}`);
}
document.getElementById('actionButton').addEventListener("click", e => {
sayHello();
});
当我运行时snowpack build
,我在终端上得到以下输出:
(node:3868) ExperimentalWarning: The fs.promises API is experimental
(node:3868) ExperimentalWarning: The dns.promises API is experimental
[16:24:29] [snowpack] ! building files...
[16:24:29] [snowpack] import date-fns@latest → https://pkg.snowpack.dev/date-fns
[16:24:29] [snowpack] pin dependency to this version: `snowpack add date-fns`
(node:3868) ExperimentalWarning: Readable[Symbol.asyncIterator] is an experimental feature. This feature could change at any time
[16:24:30] [snowpack] ✔ files built. [1.01s]
[16:24:30] [snowpack] ! building dependencies...
[16:24:30] [snowpack] ✔ dependencies built. [0.00s]
[16:24:30] [snowpack] ! writing to disk...
[16:24:30] [snowpack] ✔ write complete. [0.01s]
[16:24:30] [snowpack] ! optimizing build...
> build/index.js:1:23: error: Do not know how to load path: build/_snowpack/pkg/date-fns
1 │ import { format } from './_snowpack/pkg/date-fns';
我确实得到了一个build
与我的文件夹内容几乎相同的sourcecode
文件夹,未缩小。我注意到build/index.js
文件的导入现在import { format } from './_snowpack/pkg/date-fns
我认为是有道理的。该文件在那里(没有文件扩展名),其内容只是
export * from '/_snowpack/pkg/-/date-fns@v2.21.3-Vs6fvs3gpzGLhDtcrhvq/dist=es2020,mode=imports/optimized/date-fns.js';
export {default} from '/_snowpack/pkg/-/date-fns@v2.21.3-Vs6fvs3gpzGLhDtcrhvq/dist=es2020,mode=imports/optimized/date-fns.js';
/build
文件夹中的任何地方都不存在。
为什么snowpack build
“不知道如何加载路径” build/_snowpack/pkg/date-fns
?我认为它没有因为这个错误而缩小或摇树。
顺便说一句,如果我删除date-fns
on的导入引用index.js
,则snowpack build
有效。它甚至会缩小(但不是树抖动,但这是另一个问题)。
我意识到我正在使用esbuild
,因为我不想处理 WebPack。我在某处读到,这种构建模式还没有为生产做好准备,但我觉得它snowpack build
仍然可以工作,尽管没有优化。
我还遵循了我在应该运行的地方阅读的建议snowpack add date-fns
,然后snowpack build
再次运行,但这不起作用。我仍然得到同样的错误。
我的配置有什么问题吗?项目结构?html文件还是js文件?在构建输出中有什么我应该注意的吗?