我们最近从 webpack 4 迁移到 5,我发现了一些可能是错误或我缺乏理解的东西。
基本上,我的项目有几个页面,我在webpack.config.js中定义为入口点。这些入口点之一称为main.js,位于名为“popup”的目录中,该目录有两个文件 - main.html和main.js。
Main.html非常简单,只是一些 html 和一个指向main.js 的链接。 Main.js从另一个目录导入一个 scss 文件,我们称之为styles.scss,
import './other_directory/styles.scss';
styles.css从另一个地方加载字体信息,如下所示:
@font-face {
font - family: 'fontello';
src: url('./assets/fontello.woff2') format('woff2');
...
}
Run Code Online (Sandbox Code Playgroud)
webpack 配置的另外两个相关部分是:
new CopyWebpackPlugin({
patterns: [{
from: 'src/popup/',
to: 'popup/'
},
Run Code Online (Sandbox Code Playgroud)
module: {
rules: [{
test: /\.s(a|c)ss$/,
use: [{
loader: 'style-loader'
}, {
loader: 'css-loader'
}, …Run Code Online (Sandbox Code Playgroud) 我正在将Rails项目迁移到Django.Rails项目是使用restful路由构建的,它从不接触数据库.相反,它只是重定向到不同的方法,这些方法都使用指定的操作方法调用外部服务.现在,我已经找到了许多django的框架,它们提供了更多的功能以及一堆铃声和口哨声,但这对我目前的情况来说太过分了.
作为替代方案,我可以忽略urls.py中的action方法,只需提供一个regex来验证url,然后解析views.py中的请求方法,重定向到适当的方法.这是一种方法还是有其他方法我可以看一下?
我正在开发一个扩展程序,它拍摄页面可见部分的快照并将其复制到剪贴板。我决定使用新的剪贴板 API来做到这一点。处理捕获和复制的代码位于我的扩展程序的 background.js 中。这是相关部分的样子:
chrome.tabs.captureVisibleTab(function(dataUrl) {
convertToBlob(dataUrl).then((data) => {
navigator.clipboard.write([
new ClipboardItem({
'image/png': data
})
]);
});
});
Run Code Online (Sandbox Code Playgroud)
此操作是通过单击我使用 注入页面的小部件触发的chrome.tabs.executeScript。我只在 Chrome 中工作。但是,每次尝试时,都会出现此错误:
Uncaught (in promise) DOMException: Document is not focused.
Run Code Online (Sandbox Code Playgroud)
最初,我认为我捕获的文档没有聚焦,但事实并非如此。我的document.hasFocus()回归真实。然后我想,出于某种我无法理解的原因,它希望 background.html 成为焦点。因此,我最终创建了一个包含输入字段的自定义 background.html,在执行 navigator.clipboard 访问之前,我会以编程方式关注并单击该输入。没有骰子。编辑:我执行了实际的页面检查并且 background.html 确实没有聚焦,即使我将焦点分配给它,这是有道理的。没有意义的是为什么会发生这种情况,因为我应该使用此 API 在任何上下文中将内容捕获到剪贴板。
我确实运行了 navigator.permissions 查询以查看是否授予了剪贴板写访问权限,并且确实如此。
在这一点上,我没有想法,有人有什么建议吗?谢谢!卢卡
对于我正在进行的其中一个项目,我必须使用DOM Inspector来调试Firefox扩展.
DOM检查器的问题在于它只向您显示代码下面的浏览器,没有办法分离浏览器或并排出代码部分或浏览器.
它对我不起作用,因为我正在调试的插件有一个大的xul叠加层,并且有问题的区域位于底部,所以没有物理方法来查看该区域的代码以及区域本身.
所以我决定修改DOM Inspector本身,将浏览器放在代码编辑器的一边.
以下是我采取的步骤:
inspector.jar使用提取jar -xf <filename>inspectorOverlay.xul,改成<vbox id="bxInspectorMain">了一个hbox.(这应该足以将这两个窗口水平放置.)jar cf.但是,当我尝试运行它时,我收到以下警告:
Warning: WARN addons.xpi: Add-on is invalid: [Exception... "Component returned failure code: 0x80520006 (NS_ERROR_FILE_TARGET_DOES_NOT_EXIST) [nsIZipReader.getInputStream]" nsresult: "0x80520006 (NS_ERROR_FILE_TARGET_DOES_NOT_EXIST)" location: "JS frame :: resource://gre/modules/XPIProvider.jsm :: loadManifestFromZipReader :: line 740" data: no]
Source File: resource://gre/modules/XPIProvider.jsm
Line: 740
Warning: WARN addons.xpi: Could not uninstall invalid item from locked install location
Source File: resource://gre/modules/XPIProvider.jsm
Line: 2042
Run Code Online (Sandbox Code Playgroud)
我的问题是 - …
我开始为依赖于几个环境变量的 Django 应用编写测试。当我在 shell 中测试它时,我可以导入 os 并指定变量,我的测试工作得很好。但是,当我将它们放入tests.py 时,我仍然收到一个关键错误,因为找不到这些变量。这是我的测试的样子:
from django.utils import unittest
from django.test.utils import setup_test_environment
from django.test.client import Client
import os
os.environ['a'] = 'a'
os.environ['b'] = 'b'
class ViewTests(unittest.TestCase):
def setUp(self):
setup_test_environment()
def test_login_returning_right_template(self):
""" get / should return login.html template """
c = Client()
resp = c.get('/')
self.assertEqual(resp.templates[0].name, 'login.html')
Run Code Online (Sandbox Code Playgroud)
这是初始化这些变量的错误位置吗?我尝试在 setUp 上执行此操作,但结果相同-未找到它们。关于如何在运行测试套件之前初始化环境变量的任何建议?谢谢!卢卡
django ×2
javascript ×2
clipboard ×1
css ×1
firefox ×1
fonts ×1
rest ×1
unit-testing ×1
webpack ×1
webpack-5 ×1