0

我正在使用 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-fnson的导入引用index.js,则snowpack build有效。它甚至会缩小(但不是树抖动,但这是另一个问题)。

我意识到我正在使用esbuild,因为我不想处理 WebPack。我在某处读到,这种构建模式还没有为生产做好准备,但我觉得它snowpack build仍然可以工作,尽管没有优化。

我还遵循了我在应该运行的地方阅读的建议snowpack add date-fns,然后snowpack build再次运行,但这不起作用。我仍然得到同样的错误。

我的配置有什么问题吗?项目结构?html文件还是js文件?在构建输出中有什么我应该注意的吗?

4

0 回答 0