【问题标题】:Difference between Svelte REPL and local outputSvelte REPL 和本地输出之间的区别
【发布时间】:2017-03-02 14:45:27
【问题描述】:

TL;DR:在线 REPL (Svelte 1.9.1) 有效,但本地已损坏。问题:我在本地做错了什么?

以下代码适用于this REPL

  {{grades}}<br>
  {{#each guesses as guess, i}}
      {{#each guess as slot}}
        {{slot}}
      {{/each}}
        =
      {{ grades[i] }}
  {{/each}}


<script>
  export default {
    data () {
      return {
        guesses: [
          [0, 1, 1, 3, 6],
        ],
        grades: [
          [1, 2, 2],
        ],
      }
    },
  };
</script>

也就是说,它产生输出:

1,2,2

01136 = 1,2,2

但是,在本地(Linux Mint 18.1 上的 Svelte 1.9.1,64 位),完全相同的文件会产生以下输出:

1,2,2

01136 = 未定义

如您所见,它可以正常访问grades,但不能在#each 循环中访问grades[i]。控制台没有报告错误。

另一件神秘的事情

如果我删除这些行:

      {{#each guess as slot}}
        {{slot}}
      {{/each}}

...那么本地渲染就变成了:

1,2,2

= 1,2,2

那么#each 块是如何使grades[i] 突然未定义...但仅限于本地?

其他环境信息

本地版本通过以下方式拉入:

Game.js

import Game from '../components/Game.html';

const GameComponent = new Game({
  target: document.querySelector('main'),
});

export default GameComponent;

main.js

/* eslint-disable no-unused-vars */

import Game from './js/Game';

index.html

<!doctype html>
<html>
<head>
  <title>CheaterMind</title>
  <link rel="stylesheet" type="text/css" href="colours.css">
</head>
<body>
  <main></main>
  <script src='../dist/main.js' charset='utf-8'></script>
</body>
</html>

设置是https://github.com/charpeni/svelte-example 的副本,我使用的是npm run build:watch

【问题讨论】:

  • 这是一个非常疯狂的错误——我无法在本地获得相同的结果,你能创建一个可共享的复制品吗?
  • @RichHarris 当然,等一下。我永远不确定(使用任何技术)是我还是技术。 :)
  • 谢谢。我目前的工作假设是,该错误是由独立模式(REPL 使用)和共享模式(rollup-plugin-svelte 使用)之间的差异引起的——可能是某个变量被踩到了某个地方。正在调查。
  • 我认为您的 Svelte 版本已过时!尝试删除您的 yarn.lock 文件和您的 node_modules 文件夹并重新安装 - 这为我修复了它

标签: javascript node.js svelte


【解决方案1】:

更新到 svelte 1.9.1 本地 yarn upgrade svelte

【讨论】:

    猜你喜欢
    • 2020-10-07
    • 1970-01-01
    • 2021-11-15
    • 1970-01-01
    • 1970-01-01
    • 2015-08-27
    • 1970-01-01
    • 1970-01-01
    • 2014-11-06
    相关资源
    最近更新 更多