小编Mon*_*nja的帖子

无法读取 Bundler.transformFile 处未定义的属性(读取“transformFile”)

我今天更新了node,但出现此错误:

error: TypeError: Cannot read properties of undefined (reading 'transformFile')
    at Bundler.transformFile (/Users/.../node_modules/metro/src/Bundler.js:48:30)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async Object.transform (/Users/.../node_modules/metro/src/lib/transformHelpers.js:101:12)
    at async processModule (/Users/.../node_modules/metro/src/DeltaBundler/traverseDependencies.js:137:18)
    at async traverseDependenciesForSingleFile (/Users/.../node_modules/metro/src/DeltaBundler/traverseDependencies.js:131:3)
    at async Promise.all (index 0)
    at async initialTraverseDependencies (/Users/.../node_modules/metro/src/DeltaBundler/traverseDependencies.js:114:3)
    at async DeltaCalculator._getChangedDependencies (/Users/.../node_modules/metro/src/DeltaBundler/DeltaCalculator.js:164:25)
    at async DeltaCalculator.getDelta (/Users/.../node_modules/metro/src/DeltaBundler/DeltaCalculator.js:94:16)
Run Code Online (Sandbox Code Playgroud)

除此之外我没有做过任何不寻常的事情,所以我不知道该分享什么。如果我遗漏了任何信息,请评论,我会添加它。

在构建终端时也会抛出此错误:

Failed to construct transformer:  Error: error:0308010C:digital envelope routines::unsupported
    at new Hash (node:internal/crypto/hash:67:19)
    at Object.createHash (node:crypto:130:10)
    at stableHash (/Users/.../node_modules/metro-cache/src/stableHash.js:19:8)
    at Object.getCacheKey (/Users/.../node_modules/metro-transform-worker/src/index.js:593:7)
    at getTransformCacheKey (/Users/.../node_modules/metro/src/DeltaBundler/getTransformCacheKey.js:24:19)
    at new Transformer (/Users/.../node_modules/metro/src/DeltaBundler/Transformer.js:48:9) …
Run Code Online (Sandbox Code Playgroud)

node.js npm react-native npm-install react-native-cli

80
推荐指数
5
解决办法
12万
查看次数

Rails包括范围

我有一个名为Author的模型.一位作者有很多文章.文章有一个名为.published的范围,其中:where(已发布:true).

我想加载作者,发表文章.我试过了:

Author.includes(:articles.published).find(params[:author_id])
Run Code Online (Sandbox Code Playgroud)

但这会引发错误:未定义的方法'已发布'.任何的想法?

activerecord scope ruby-on-rails rails-activerecord

28
推荐指数
4
解决办法
3万
查看次数

Django REST Framework嵌套资源键"id"无法访问

所以我有以下结构:

ClientFile属于所有者(类名=联系人).我正在尝试使用API​​创建Clientfile.该请求包含以下数据:

{
  name: "Hello!"
  owner: {
    id: 1,
    first_name: "Charlie",
    last_name: "Watson"
  }
}
Run Code Online (Sandbox Code Playgroud)

我根据我的结构创建了序列化器.希望这个API调用会创建一个名为"Hello!"的客户端文件.并联系ID 1作为所有者:

class ContactSerializer(serializers.ModelSerializer):
  class Meta:
    model = Contact
    fields = (
      'id',
      'first_name',
      'last_name',
    )

class ClientfileSerializer(serializers.ModelSerializer):

  owner = ContactSerializer(read_only=False)

  class Meta():
    model = Clientfile
    fields = (
      'id',
      'name',
      'owner',
    )

  def create(self, validated_data):

    owner = Contact.objects.get(pk=validated_data['owner']['id'])
Run Code Online (Sandbox Code Playgroud)

我确实进入了创建方法.但是,我需要的唯一字段(['owner']['id'])无法访问.如果我这样做print ['owner']['first_name'],确实会返回'查理'.但由于某些原因,ID似乎无法访问...

有什么理由可以发生这种情况?我错过了什么吗?(我是Django的新手)


解决方案:刚刚发现ID首先没有显示的原因是因为我必须在这样的字段中声明它:希望这会有所帮助.

class ContactSerializer(serializers.ModelSerializer):

  id = serializers.IntegerField() # ? Here

  class Meta:
    model = Contact
    fields = (
      'id',
      'first_name', …
Run Code Online (Sandbox Code Playgroud)

python django django-rest-framework

13
推荐指数
2
解决办法
5197
查看次数

Android 版 Chrome 上的网络推送通知:我需要 GCM 或 SNS 等第三方服务吗?

我想使用 Service Workers 在我的渐进式 Web 应用程序(PWA) 上设置 Web 推送通知。但我无法理解 Google Cloud Messaging 和 Amazon SNS 等第三方服务的作用,以及我是否需要它们。

据我了解,当用户单击“允许通知”按钮时,您将获得一个唯一的订阅端点。然后在后端,您可以使用此端点向该特定用户发送通知。

然而,我发现的所有后端库(例如Node.js 的pywebpushweb-push)都提到您需要 GCM API 密钥才能发送通知。

但MDN Push API 文档是这样说的:

早于 52 的 Chrome 版本要求您在 Google Cloud Messaging 上设置一个项目来发送推送消息 [...]

所以我假设新版本的 Chrome(今天的版本 58)应该能够在没有第三方帮助的情况下显示通知。

这是我想要实现的目标的示例。我只是不确定他们在后端做什么。

注意:我并不是尝试将本机推送通知发送到 Android 或 iOS 设备,而只是使用 Web Push API 发送到 Chrome 上的渐进式 Web 应用程序。

google-chrome web-push

12
推荐指数
1
解决办法
3067
查看次数

Angular - 使用html插入字符串

所以我有一个"模板字符串",如下所示:

var templateString = "Hello my name is {{name}}";
Run Code Online (Sandbox Code Playgroud)

我要插入的名称是变量.所以我这样做了:

var miniScope = {
 name: "Chuck"
};

var sentence = $interpolate(templateString)(miniScope);
/* sentence: "Hello my name is Chuck" */
Run Code Online (Sandbox Code Playgroud)

这有效.现在我想大胆一下这个名字.我显然已经尝试过:

var miniScope = {
 name: "<strong>Chuck</strong>"
};
Run Code Online (Sandbox Code Playgroud)

但是html代码被转义了.知道我怎么能做到这一点?

PS:对于那些想知道我为什么不把字符串放在模板中的人来说,这是因为我的模板字符串来自服务器.

string-interpolation angularjs

10
推荐指数
2
解决办法
3万
查看次数

Django和服务工作者 - 在应用程序的根URL上提供"sw.js"

所以我正在构建一个Django渐进式Web应用程序,使用服务工作者提供离线支持.

根据谷歌的文档,sw.js文件应该是应用程序URL的根目录:

您需要执行此操作,因为服务工作者的范围(ServiceWorker将加载的URL集)由其所在的目录定义.

目前,我正在从http://example.com/static/文件夹中提供所有静态资源.但我需要在以下网址上提供此特定文件:http://example.com/sw.js.

知道我怎么能做到这一点?我可以制定一个特定的nginx规则来执行此重定向,但我不知道这是否是最干净的方法.也许这个设置应该存在于urls.py中?

注意:我已经看到这个问题建议使用static()方法django.conf.urls.static.但是django的文档说静态方法仅供开发使用,对我不利.

注意(2):我想我可以更改STATIC_URL设置,但我对从/ static目录提供的文件感到满意.我只希望这个文件位于url的根目录下.

django django-urls django-staticfiles service-worker

9
推荐指数
2
解决办法
3739
查看次数

iOS 和 Android 应用程序应使用什么 CORS 策略?

我正在构建一个供 iOS/Android 应用程序使用的 API。该应用程序使用 JSON Web Token 对用户进行身份验证。当我尝试从本机应用程序与 API 进行交互时,我遇到了 CORS 问题。因此,我为所有来源添加了 CORS 标头(仅适用于以 开头的 url /api/)。现在工作正常,但我想知道我所做的是否不是一个潜在的漏洞?

我应该允许所有来源吗?如果本机应用程序要请求 API,有什么方法可以提前知道 Origin 主机?

我很困惑。在此先感谢您的帮助。

api rest cors django-rest-framework django-cors-headers

8
推荐指数
1
解决办法
7666
查看次数

在自定义控制器中设计resource和resource_name帮助程序

我使用路由扩展了默认的Devise RegistrationsController:

# use my own controller for devise registrations
devise_for :users, :controllers => { registrations: 'registrations' }
Run Code Online (Sandbox Code Playgroud)

在这个控制器中,我有一个名为new_from_invitation的方法.此方法呈现自定义注册表单,以防用户来自邀请.

我复制了文件devise/registrations/new.html.erb.所以我的自定义注册表单如下所示:

<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %>
Run Code Online (Sandbox Code Playgroud)

这会抛出ArgumentError,因为资源是nil.与资源名称相同.不知何故,资源和resource_name帮助程序在默认的设计/注册/新方法中可用,但我无法弄清楚如何.因此无法想出让我的自定义方法可以使用这些帮助程序的方法.任何帮助将非常感谢!

ruby-on-rails helpers devise

7
推荐指数
1
解决办法
5016
查看次数

Rails - 如何正确转义update_all查询中的值

所以我有一个update_all查询,如下所示:

Task.where(...).update_all('position = position - X, parent_id = Y')
Run Code Online (Sandbox Code Playgroud)

我想用整数值替换X和Y. 而且我想安全地做到:"铁路方式".知道我怎么能做到这一点?


编辑:我的rails控制器中没有位置变量.如果X = 1,则最终查询应该包含"position = position-1".

此外,update_all文档指定此方法只接受一个参数:表示SQL语句的SET部分的字符串,数组或散列.


编辑2:好吧,我通过略微调整Arup Rakshit解决方案来实现它.这是最终的工作解决方案:

Task.update_all(['position = position - ?, parent_id = ?', X, Y])
Run Code Online (Sandbox Code Playgroud)

sql sql-injection escaping ruby-on-rails

7
推荐指数
1
解决办法
1897
查看次数

Axios - 防止 .then() 在 http 错误上执行

我的问题:

我已经设置了一个拦截器来捕获 HTTP 响应中的错误代码。当 JWT 到期时,我有一个从服务器返回的代码 401。这是我的拦截器:

this.axios.interceptors.response.use(undefined, (error) => {
  if (error.response.status === 401) {
    this.$store.dispatch('auth/logout').then(() => {
      this.$router.push({name: 'login'})
      return Promise.reject(error)
    })
  }
})
Run Code Online (Sandbox Code Playgroud)

我的拦截器工作正常,除了被拦截的请求仍然解析为 .then() 部分。

this.axios.get('/texts').then(function(){
    // This is still being executed and generates javascript errors because the response doesn't contain the right data
})
Run Code Online (Sandbox Code Playgroud)

从 axios 文档中,我发现您可以通过调用来防止这种情况发生

this.axios.get('/texts').then(function(){
    // only on success
}).catch(function(){
    // only on errors
}).then(function(){
    // always executed
})
Run Code Online (Sandbox Code Playgroud)

但这非常冗长,我不想对我的应用程序发出的每个请求都执行此操作。

我的问题是:

出现错误时如何防止 axios 执行 .then() 回调。我可以在拦截器中做些什么吗?像 event.stopPropagation() 或类似的东西?

javascript interceptor promise axios

7
推荐指数
1
解决办法
1659
查看次数