我正在尝试使用lit-html节省时间,但是我无法正确设置所有内容。

Electron 4.1.1

Node 11.15

在发布此消息之前的5分钟,我已经运行npm install和 Electron 重建,没有运气。

我像其他NPM包一样使用require()

var render = require('lit-html').render
var html = require('lit-html').html
console.log(require("lit-html"))

不幸的是,我遇到了这个错误javascript - 如何在Electron中正确加载lit-html模块-LMLPHP
引用上面的三行代码。

我的代码没有任何问题。

我尝试通过NPM重新安装lit-html无济于事。我真的很想使用这个库,但是首先我要克服这个障碍。如果我说实话,我不知道此错误是否可以重现,但是我似乎没有任何办法可以解决。问题似乎在于 Node 和处理导入的方式。

我在这里想念什么吗?这是常见问题吗?如果是这样,我该如何解决?

最佳答案

您需要先转换lit-html才能对其进行require编码

我测试了require('lit-html')并收到以下错误消息:

/home/chbphone55/Workspace/test/node_modules/lit-html/lit-html.js:31
import { defaultTemplateProcessor } from './lib/default-template-processor.js';

它明确指出该错误来自lit-html/lit-html.js:31,其中该行使用ES模块import语法。

您可以使用Babel或类似工具来转换它。但是,您可能希望尝试使用ES Module语法,以便可以导入lit-html而不进行编译。

例子:

<!-- HTML File -->
<script type="module" src="index.js"></script>

// index.js
import { html } from 'lit-html';

如果您不能使用type="module"怎么办

如果您无法使用上面的type="module"方法,则也可以使用the ESM package



以下是一些使用方法的示例:
  • 使用 Node require标志(-r)在其他所有内容
  • 之前加载esm
    node -r esm index.js
    
  • 在您的主文件中加载esm,然后加载其余代码。

  • // Set options as a parameter, environment variable, or rc file.
    require = require('esm')(module/*, options*/)
    module.exports = require('./main.js')
    

    10-02 15:39