Home Php C# Sql C C++ Javascript Python Java Go Android Git Linux Asp.net Django .net Node.js Ios Xcode Cocoa Iphone Mysql Tomcat Mongodb Bash Objective-c Scala Visual-studio Apache Elasticsearch Jar Eclipse Jquery Ruby-on-rails Ruby Rubygems Android-studio Spring Lua Sqlite Emacs Ubuntu Perl Docker Swift Amazon-web-services Svn Html Ajax Xml Java-ee Maven Intellij-idea Rvm Macos Unix Css Ipad Postgresql Css3 Json Windows-server Vue.js Typescript Oracle Hibernate Internet-explorer Github Tensorflow Laravel Symfony Redis Html5 Google-app-engine Nginx Firefox Sqlalchemy Lucene Erlang Flask Vim Solr Webview Facebook Zend-framework Virtualenv Nosql Ide Twitter Safari Flutter Bundle Phonegap Centos Sphinx Actionscript Tornado Register | Login | Edit Tags | New Questions | 繁体 | 简体


10 questions online user: 24

0
votes
answers
43 views
+10

如何使用四角位置獲得3d平面的角度

0

大約6個月前,我開始製作3D圖形引擎。 它已經很好看了。我已經實現了旋轉,平移,縮放,Z緩衝(畫家的算法)......我現在正在研究鏡面着色器。爲此,我需要一些方法來獲得他個人面孔的角度 我的問題是,如何通過只知道四個角的位置來獲得飛機的角度?如何使用四角位置獲得3d平面的角度

這是我走到這一步:在空天飛機的

function faceAngle(verts,faces){ 
    var arr = []; 
    for(var i=0;i<faces.length;i++){ 
    var posA = verts[faces[i][0]];//the four corners 
    var posB = verts[faces[i][1]];// A  B 
    var posC = verts[faces[i][2]];//  ----- 
    var posD = verts[faces[i][3]];//  |  | 
            //  |  | 
    var ar = [];     //  ----- 
    ar.push(/*some Maths*/);//x // D  C 
    ar.push(/*some Maths*/);//y 
    ar.push(/*some Maths*/);//z 
    arr.push(ar); 
    } 
    return arr; 
} 
+0

角...平面之間有什麼? – MBo

沙发
0
2

方向由法線定義。爲了得到這個矢量,計算cross product of two edges(屬於飛機)。所以你在飛機上只需要三個非共線點。

n = (posB - posA) x (posC - posA) //cross product of two vectors 

注意,歸一化(單位)法向矢量的分量direction cosines

+0

對不起,我對這個話題很不瞭解。但是,我如何使用法向量來計算平面的方向?我是否必須使用勾股定理來計算面的中心與法向量和3個軸之間的直線的角度?因爲我想用弧度返回角度。 –

+0

@DylanMissuwe平面*的方向是*法向量;但如果您想將其轉換爲球形極角,請參閱[此處](https://en.wikipedia.org/wiki/Vector_fields_in_cylindrical_and_spherical_coordinates#Vector_fields)。 – meowgoesthedog

+0

@Dylan Missuwe這就是爲什麼我問 - 你的意思是什麼角度。法向量是方向的最佳表徵。所有其他參數可能從正常推導 – MBo

0
votes
answers
30 views
+10

等待硒中的ui數據過濾器

-1

在應用程序中,很多字段都存在,並且所有字段都有過濾器(文本框)。所以一旦用戶在任何一個過濾器中輸入值,UI數據(UI表)將開始刷新。等待硒中的ui數據過濾器

我想等待數據在UI中加載,然後應用另一個過濾器。

有什麼辦法要等到數據被不使用的Thread.sleep

+0

見:我如何做X?(https://meta.stackoverflow.com/questions/253069/whats-the-appropriate-new-current-close-reason-for-how-do-i-do-x)對SO的期望是用戶提出問題不僅僅是研究回答他們自己的問題,研究,代碼嘗試和結果。這表明你已經花時間去嘗試幫助自己,它使我們避免重申明顯的答案,最重要的是它可以幫助你得到更具體和相關的答案!另請參見:[問] – JeffC

沙发
0
0

沒有您提供進一步的細節加載,所有我可以推薦現在是FluentWait。例如:

final WebDriver driver = ...  
new FluentWait<>(driver).withTimeout(30, SECONDS) 
    .pollingEvery(1, SECONDS) 
    .ignoring(NoSuchElementException.class) 
    .until(
     webDvr -> !webDvr.findElements(By.xpath("//tr")).isEmpty() 
    ); 
+0

感謝您的回覆....我有類似的情況在頁面中我們有很多過濾器,默認情況下所有數據都顯示.....現在我想申請過濾器一個接一個,然後再應用第二個(下一個)過濾器想要等待第一個(上一個)過濾器的數據過濾。另外,默認情況下「// tr」與一些數據一起存在。請幫我解決這個問題,因爲我對硒世界很陌生。 –

板凳
0
0

我能執行此使用下面的代碼 -

public boolean isElementDisplayed(WebElement element) { 
     try {    
       WebDriverWait wait = new WebDriverWait(driver, 5); 
       wait.until(ExpectedConditions.visibilityOf(element)); 
       return element.isDisplayed(); 
      } catch (Exception e) { 
       return false; 
      } 
} 


public void loadingTimer(){ 

    WebElement element = driver.findElement(By.xpath("//span[contains(text(),'Loading...')]")); 

    if (isElementDisplayed(element)) { 
    WebDriverWait wait = new WebDriverWait(driver , 5); 
    wait.until(ExpectedConditions.not(ExpectedConditions.visibilityOf(element))); 
    } 

} 
0
votes
answers
60 views
+10

爲什麼Firefox在Safari中沒有獲得<form> $ _GET變量?

0

我通過表單發送輸入的內容,從第1頁至第2頁,使用按鈕與action="page2.php"

<form method="get" id="chatform" action="page2.php"> 
    <input type="text" style="margin-bottom:20px;" class="form-control" id="recipient" name="recipient" placeholder="username" value=""> 
</form> 

按鈕的形式外,但它包含它的名稱:

<button type="submit" form="chatform" id="b9" style="font-size: 12px !important;" name="b9" class="buttonmenu toggleForms btn btn-secondary btn-block" style="float:left;">Chat</button> 

我也很loadind使用javascript輸入:

$(".buttonmenu").click(function(){ 
$('#recipient').val("hellooooo"); } 

問題是,一切工作正常Safari瀏覽器,但在Firefox我不戈t變量$_GET['recipient']中的任何內容,我不明白爲什麼。

在page1中只有表格串聯,沒有嵌套froms。在Safari中,一切都在第2頁完美運行:我在URL和內容中獲得了'收件人'變量的名稱,在firefox中,我只在URL中獲得'收件人'變量的名稱,但變量爲空 看來就像Firefox無法從服務器獲取$_GET['recipient']的內容,或者運行php操作IGNORING javascript。

有什麼想法?

+0

'動作= 「chat.php」''VS行動= 「使page2.php」'...所以...而且也沒有提交按鈕 –

+0

道歉,它是action =「page2.php」 - 只需在問題 – giuseppe

+0

中糾正它,你如何將表單發送到該頁面? –

沙发
0
0

1)確保您的形式是不是(嵌套)另一種形式的元素,像這樣內部: (也確保它不是內<tr><td>,或<table>元素)

<form> 
    ... 

    <form> 
     ... 
    </form> 

    ... 
</form> 

2)確保你的代碼工作,下面的代碼工作這麼試試這個,看看它是否有差別

page1.php中:

<form action="page2.php" method="GET" id="chatform"> 
 
    <input type="text" style="margin-bottom:20px;" class="form-control" id="recipient" name="recipient" placeholder="username" value=""> 
 
    <input type="submit" name="submit" value="SUBMIT"> 
 
</form>

使page2.php:

$recipient = $_GET['recipient']; 
echo $recipient; 

3)嘗試清除緩存和Cookie。有時候,形式可以打破accordinf這個問題問的Firefox helpc中心:

https://support.mozilla.org/en-US/questions/1144267

本文狀態......

許多網站問題都可以通過腐敗餅乾或高速緩存引起的。

  • 清除緩存
  • 和刪除餅乾

    警告! !這會將您註銷到您登錄的網站之外。 在地址欄中輸入about:preferences。

  • 餅乾;選擇隱私。在歷史記錄下,選擇Firefox將使用自定義 設置。按下右側的按鈕Show Cookies。使用 搜索欄查找該網站。注意;可能有多個 條目。刪除所有這些。

  • Cache;選擇高級>網絡。從緩存的Web內容跨越 ,按立即清除。如果仍存在問題,請以安全模式啓動Firefox {web link}應出現一個小對話框。 單擊在安全模式下啓動(不刷新)。當你處於安全模式時;

在地址欄中輸入about:preferences#進階。

在高級下,選擇常規。查找並關閉使用硬件 加速。

4)請確保該文件的文件是100%正確的!確保它確實是page2.php,也嘗試以斜線的行動,在一開始就像這樣:"/page2.php"

+0

當我在Firefox中運行你的代碼片段時,我得到:服務器錯誤 404 - 找不到文件或目錄。 您正在查找的資源可能已被刪除,變更了名稱或暫時不可用 – giuseppe

+0

是您的文件,實際上是叫做page2.php或僅僅是一個例子? – Jesus

+0

只是一個例子更清晰 – giuseppe

板凳
0
0

解決

火狐需要「事件」對象作爲函數的PARAM。

這是該行:

$(".buttomenu").click(function(event) {..... 
0
votes
answers
29 views
+10

從GoogleMapsClient響應中獲取Google Place Photo的URL

2

我正在構建一個API端點,它將使用express.js和Node.js client library for Google Maps API Web Services返回Google地點的詳細信息和單張照片。以下端點會返回某個地點的詳細信息,因此無法檢索照片的網址。以下是有問題的代碼。從GoogleMapsClient響應中獲取Google Place Photo的URL

有兩個請求發送到谷歌地圖的客戶端:

  1. 獲得基於req.params.id地點的詳細信息和細節包含photos陣列
  2. 使用photo_reference從上面

    var googleMapsClient = require('@google/maps').createClient({ 
        key: 'mykeyhere', 
        Promise: Promise 
    }); 
    
    exports.getGglPlace = function(req, res) { 
    
    googleMapsClient.place({ 
        placeid: req.params.id 
    }).asPromise() 
    .then((response) => { 
        var venue = response.json.result 
    
        if (venue.photos[0]) { 
        googleMapsClient.placesPhoto({ 
         photoreference: venue.photos[0].photo_reference, 
         maxwidth: 200 
        }).asPromise() 
        .then((photo) => { 
    
         console.log("Photo:", photo); // this returns a massive chunk of data which I think contains the actual image object also 
         venue.photoURL = photo.url; // this doesn't work 
    
         res.send(venue); 
        }) 
        .catch((err)=>{ 
         console.log("Error Getting Photo!", err); 
         res.send(venue); 
        }) 
        } else { 
        res.send(venue); 
        } 
    }) 
    .catch((err) => { 
        res.send(404); 
    }) 
    } 
    
  3. 獲取照片

任何想法如何從響應中獲取URL h在上面的代碼中被稱爲photo

如果我嘗試通過瀏覽器或郵遞員直接訪問API,則URL將重定向到圖像的實際源URL,這是我想要添加到我的venue對象中的內容。

API請求,例如:https://maps.googleapis.com/maps/api/place/photo?maxwidth=400&photoreference=CmRaAAAA8NPP1nJJ7RCzcQDGUrpBHJXlzlQkN74dcyQJ2ytVpeYIu47sR-8dfCjke1J5exP-HpkayaXOc26ShsVKkXOaJZBOdpmExUfCzUTIBN3x0uPfR5Nt3PnN-a3GoRVZ7YxKEhBvqXF356Tn9mBJ7lA_JQ_7GhQMKvZkOk-Rs9knsansx5yuhfIvsQ&sensor=false&key=mykeyhere

重定向到(這是我想photo.url回到什麼):https://lh3.googleusercontent.com/p/AF1QipPVD12HA5FBnjmiqVLphYgjfPtIPydn4Ie-xGKr=s1600-w200

任何幫助表示讚賞。

P.S.我在這裏的第一篇文章 - 抱歉,如果我不清楚我的問題。

+0

我發現了一個類似的問題[這裏](HTTPS: //sackoverflow.com/questions/39508823/how-process-response-object-from-google-places-api-placesphoto),但它沒有回答 – boomer4you

沙发
0
1

以下是我如何解決這個問題。它看起來並不完美,但是它完成了這項工作。

該響應包含一個req部分,其中包含可用於構建URL的關鍵字。具體而言,密鑰爲response.req.socket._host密鑰,並且密鑰爲response.req.path

這裏是什麼樣子在我的代碼(其中photo是從谷歌API的響應)

venue.photoURL = "https://" + photo.req.socket._host + photo.req.path;

photo.req.socket._host給我lh3.googleusercontent。COM

photo.req.path給我/P/AF1QipPVD12HA5FBnjmiqVLphYgjfPtIPydn4Ie-xGKr = S1600-W200

構造的URL到照片的結果是:https://lh3.googleusercontent.com/p/AF1QipPVD12HA5FBnjmiqVLphYgjfPtIPydn4Ie-xGKr=s1600-w200

板凳
0
0

一個成功的地方照片請求的響應將是一個圖像,而不是一個對象文字。

https://developers.google.com/places/web-service/photos

瀏覽知道如何重定向到照片的方式是通過一個頭。如果檢出響應,您將看到它會返回302(重定向),並在響應標題location後面。您應該可以通過以下方式快速獲取該標頭:

res.get('location'); 
// => "image url" 
+0

不幸的是,沒有做到這一點。在我的結束響應返回'狀態:200'和'.get'無法識別。而且,我的答覆中沒有任何內容被稱爲「地點」。 – boomer4you

+0

以下是響應中的標題示例(在上面的代碼中稱爲照片): https://codepad.co/snippet/eoXu0bzS#_=_ – boomer4you

0
votes
answers
40 views
+10

.eslintignore文件不能正常工作

0

我正在使用一個使用ESLint的Vue模板項目。我想將其關閉,所以我遵循這些說明並提出與.eslintignore文件不能正常工作

**/*.js 

稱爲.eslintignore文件我的項目根的內側。但是,我仍然收到eslint錯誤消息。我究竟做錯了什麼?

+0

評論這整個塊,你想從你的掉毛代碼禁用eslint? – samayo

+0

@samayo我對eslint一無所知,我只想讓這些錯誤信息消失 –

+0

我[非常理解你](https://github.com/vuejs-templates/webpack/issues/73#issuecomment- 324641423) – samayo

沙发
0
2

我愛ESLint,但有時候你希望它完全忽略整個文件。添加到您的文件的頂部:

/* eslint-disable */

它需要在評論/* this kind */,不//這樣。

而ESLint不會再抱怨你的文件了!

+0

謝謝,我會嘗試這個,如果我找不到項目範圍的解決方案 –

+0

當然,爲什麼不。我曾經在一個小項目中使用過它。 – Sam

板凳
0
1

您應該使用**/*而不是**/*.js,因爲第一個會忽略.js.vue文件。

或者你可以在你build/webpack.base.conf.js

{ 
    test: /.(js|vue)$/, 
    loader: 'eslint-loader', 
    enforce: "pre", 
    include: [resolve('src'), resolve('test')], 
    options: { 
     formatter: require('eslint-friendly-formatter') 
    } 
} 
+0

這是有道理的,但改變它後,我仍然收到相同的錯誤信息。 –

+0

嘗試重新啓動服務器。它應該工作,特別是第二個選項,因爲我也關閉了 – samayo

+0

不知何故,這似乎並沒有工作。我停止開發服務器並再次運行'npm run dev',但得到相同的消息。 –

0
votes
answers
39 views
+10

無頭Chrome輸出javascript錯誤

0

有什麼方法可以使用headless chrome輸出js錯誤嗎?無頭Chrome輸出javascript錯誤

例如,這個網站https://labs.observepoint.com/有這個js錯誤:Uncaught SyntaxError: Unexpected token !,我需要登錄它headless chrome

這是我的嘗試:
開始無頭鑲邊:google-chrome --headless --enable-logging --v=1 --remote-debugging-port=9222

然後運行這個代碼:

const CDP = require('chrome-remote-interface'); 
CDP((client) => { 
    // extract domains 
    const {Network, Page} = client; 
    // setup handlers 
    Network.requestWillBeSent((params) => { 
     console.log(params.request.url); 
    }); 
    Page.loadEventFired(() => { 
     client.close(); 
    }); 
    // enable events then start! 
    Promise.all([ 
     Network.enable(), 
     Page.enable() 
    ]).then(() => { 
     return Page.navigate({url: 'https://labs.observepoint.com/'}); 
    }).catch((err) => { 
     console.error(err); 
     client.close(); 
    }); 
}).on('error', (err) => { 
    // cannot connect to the remote endpoint 
    console.error(err); 
}); 

但我不知道在哪裏瀏覽器錯誤記錄

沙发
0
0

嘗試在命令行中使用--enable-logging=v=1。更多infoormatiomn你可以在這裏找到:enable-logging

+0

你知道我在哪裏可以找到日誌嗎?此路徑中沒有chrome_debug.log?/ .config/google-chrome /默認 – Valip

+0

命令行參數爲「--enable-logging -v = 1」,因爲您要設置詳細程度並啓用日誌記錄。這就是說,在我用(63.0)測試過的版本中,試圖寫入/usr/lib64/chromium-browser/chrome_debug.log,這是我的普通用戶無法訪問並且默默失敗的版本。 --enable-log = ../../../tmp/log使其登錄到/ tmp/log,但是對於使用--enable-log =/tmp/log嘗試的事實保存到/ usr/lib64 /鉻瀏覽器// tmp/log 編輯:也與所有說,我甚至沒有看到JS日誌中的錯誤,所以這似乎並沒有幫助OP – semi

0
votes
answers
42 views
+10

我加CDN鏈接到我的項目......在未來給定的CDN鏈接內容可能是由公司爲他們更新

-1

我創造了我的項目CDN鏈接變化......有人說,關於CDN缺點鏈接公司更新鏈接時有新版本來..是真的......我不會留在我的給定版本(不需要更新)..他們刪除我給定的CDN鏈接並更換新版本..它可以影響到我的項目.. 。我無法將其添加到我的服務器,因爲網頁加載時間增加....請給我一個關於CDN鏈接的想法。我加CDN鏈接到我的項目......在未來給定的CDN鏈接內容可能是由公司爲他們更新

我使用這些鏈接

<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> 
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.css"> 
<script src="http://code.jquery.com/jquery-1.11.1.js"></script> 

<script src="https://code.jquery.com/jquery-3.2.1.min.js" integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4=" crossorigin="anonymous"></script> 
<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script> 
<script src="http://code.jquery.com/ui/1.12.1/jquery-ui.min.js"></script> 
<link rel="stylesheet" href="https://cdn.datatables.net/tabletools/2.2.4/css/dataTables.tableTools.min.css"> 
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/v/dt/dt-1.10.16/datatables.min.css"/> 
<script src="https://cdn.datatables.net/1.10.11/js/jquery.dataTables.min.js"></script> 
<script src="https://cdn.datatables.net/tabletools/2.2.4/js/dataTables.tableTools.min.js"></script> 
+1

添加新版本時,url中的版本號不同。他們不更換您的版本,他們只需添加新的 – charlietfl

+0

謝謝主席先生......不要ü認爲它不的影響到我的項目在未來......你能找到我得到了官方網站上面這個鏈接... –

+1

沒人可以預測未來,但這些CDN的所有廣泛使用 – charlietfl

沙发
0
1

你永遠不知道某些什麼是CDN會做,但一般好的都比較穩定。當CDN託管文件的新版本發佈時,它將在URL中使用該版本號進行託管 - 因此即使在發佈新版本時,堅持使用舊版本也不會破壞您的頁面。

的CDN通常還是舉辦舊版本的軟件。舉例來說,BootstrapCDN.com/legacy/列出了舊版本的Bootstrap,它們仍然可用,仍然由版本號託管,一直回到v2.0.4。 jQuery的的

舊版也仍託管;你可以在code.jQuery.com/jQuery/看到版本和鏈接。

如果你想有一個備份計劃,以防一個CDN停止託管,你需要一個版本,你可以使用一些JavaScript鏈接到一個備份副本,如果第一個鏈接不出於某種原因。 This Stack Overflow answer告訴你如何做到這一點。

+0

謝謝。我使用methord爲JS ...但它不能添加到CSS樣式表 –

+0

對於CSS,你如果樣式還沒有被應用(即已知的引導方式)可以檢查'.getComputedStyle' ...那麼你可以使用JS從其他地方加載樣式表;無論是本地還是其他CDN。 – freginold

0
votes
answers
23 views
+10

怎樣的next()在同一div

0

目標我有這個HTML怎樣的next()在同一div

<h3 class="toggle_div"> 
     <i class="left-image switch-icon"></i> 
    </h3> 

我想改變的類名,當我點擊div。在這種情況下,左圖應更改爲類名右圖

這是jQuery我:

$('.toggle-div').click(function(){ 
    $(this).siblings().next('.switch-icon').toggleClass("left-image right-image"); 
}); 

我想這一點,因爲下面的代碼只有當我把<i>元素的div元素我想用來切換工作底下。因此,我似乎無法獲取div元素內的元素的類名。

$('.toggle-div').click(function(){ 
    $(this).next('.switch-icon').toggleClass("left-image right-image"); 
}); 

我可以用什麼來使它工作?

的jsfiddlehttp://jsfiddle.net/f72FY/69/所有的類名

+2

類的名字是錯的JavaScript。它的toggle_div不是toggle-div –

+1

'.switch-icon'不是'toggle_div'的兄弟 - 它是一個子元素。 '$(this).find(「。switch-icon」)' –

+1

http://jsfiddle.net/f72FY/70/ –

沙发
0
1

您可以使用.find()到被點擊的元素中找到.switch-icon

$('.toggle_div').click(function(){ 
 
     $(this).find('.switch-icon').toggleClass("left-image right-image"); 
 
    });
.left-image 
 
{ 
 
background-image: url('http://i.stack.imgur.com/euD9p.png'); 
 
    width:20px; 
 
    height:20px; 
 
    background-repeat: no-repeat; 
 
    
 
} 
 
.right-image 
 
{ 
 
background-image: url('http://i.stack.imgur.com/dzs9m.png'); 
 
    width:20px; 
 
    height:20px; 
 
    background-repeat: no-repeat; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
     <h3 class="toggle_div"> 
 
     Clicking on this text should toggle 
 
     	 	 <div class="left-image switch-icon"></div> 
 
     </h3>

板凳
0
1

首先是錯誤的JS。然後你不需要$(本).siblings()。接下來

剛剛嘗試這一點

$('.toggle_div').click(function(){ 
    $('.switch-icon').toggleClass("left-image right-image"); 
}); 
+0

謝謝!現在明白了。 – Siyah

+0

在20分鐘的時間內,OP提出了一個新問題:我單擊一個div,它會更改所有的開關圖標,我如何才能使其更改爲一個... –

地板
0
1

您可以在方法中使用.children或.find with。這應該能夠根據選擇器檢索完整的元素細節。

4楼
0
0

試試這個代碼

$('.toggle_div').click(function(){ 
        $('div.switch-icon').toggleClass("left-image right-image"); 
    }); 
0
votes
answers
26 views
+10

更改Windows配置文件nodemon nodejs不工作

0

我已經使用nodemon util來幫助我在nodejs開發中的工作。在我的PC(Windows)中我不得不改變我的個人資料和之後新的配置文件,我不能使用nodemon了... 我又安裝了這樣的方式:更改Windows配置文件nodemon nodejs不工作

npm install --save-dev nodemon 

npm install --save-dev nodemon -g 

我從node_modules刪除它,重新安裝,但同樣的錯誤:

'nodemon' is not recognized as an internal or external command, operable program or batch file.

任何想法?

+3

[Nodejs無法在Windows上找到已安裝的模塊?](https://stackoverflow.com/questions/9587665/nodejs-cannot-find-installed -module-on-windows) – hsz

+0

這是一個好主意,我改變了與參考文章相關的路徑,但沒有改變...我得到了同樣的錯誤... – HowToTellForAChild

+0

這是值得重新啓動您的控制檯,甚至註銷應用更改。 – hsz

沙发
0
1

時間,我得到了它: 我有不好的價值在礦井通道變量:

錯誤:C: .. 應用程序數據漫遊 NPM node_modules

GOOD:C: .. AppData Roaming npm

板凳
0
0
npm i nodemon -g 

將安裝模塊全局所以你的窗口可以通過時間我試圖找出,腰臀比是我的問題識別命令

+0

坦克你的提示,但unfortanutelly不爲我工作... *'nodemon'不被識別爲內部或外部命令, 可操作程序或批處理文件。*再次.. – HowToTellForAChild

0
votes
answers
31 views
+10

爲什麼我的Redux reducer重構失敗?

1

這裏就是我試圖做的一個例子:爲什麼我的Redux reducer重構失敗?

const setView = state => payload => ({ ...state, view: payload }); 

const reducers = { 
    SET_VIEW: setView 
}; 

export default (state = initialState, action) => reducers[action.type](state)(action.payload); 

不幸的是,我得到以下錯誤:

Uncaught TypeError: reducers[action.type] is not a function

我究竟在做什麼錯? reducers是一個帶有函數的對象文字。

+0

看起來它可以基於顯示的內容工作。在發生錯誤的地方記錄'redurs'的值是多少? – bazzells

+0

@bazzells Nope,Redux在商店創建時分派一個虛擬動作,OP不處理錯誤。查看我的答案瞭解更多詳情。 – Li357

沙发
0
2

這實際上是一個相當晦澀的問題。究其原因是因爲,每the Redux documentation on createStore

When a store is created, Redux dispatches a dummy action to your reducer to populate the store with the initial state. You are not meant to handle the dummy action directly. Just remember that your reducer should return some kind of initial state if the state given to it as the first argument is undefined, and you're all set.

而且通過文檔提到的只是讓這個假動作恰好be this line the source

dispatch({ type: ActionTypes.INIT }) 

這裏,ActionTypes.INIT基本上是跟着一個隨機字符串,字符串@@redux/INIT數字和句點。

因此,當你與createStore創建存儲,虛擬動作被分派到你的減速,和動作類型在reducers對象不存在,所以你得到的錯誤,undefined是不是一個函數。這就是爲什麼你總是有你的減速機默認情況下。例如,與switch語句,你總是返回狀態的默認情況下:

switch(action.type) { 
    … 
    default: 
    return state; 
} 

默認情況下允許的動作捕捉如終極版本身派出誘敵動作。同樣的原則也適用於你的代碼:

export default (state = initialState, action) => reducers[action.type] ? reducers[action.type](state)(action.payload) : state; 

這種檢查是否減速的reducers對象實際存在。如果是這樣,它會調用減速器。如果不是,就像在默認情況下一樣,只是返回狀態。

+0

哦,哇,TIL。感謝您的解釋!所以,必須進行三元檢查似乎很愚蠢,我想我會堅持開關語句。有沒有辦法通過在'combineReducers'中做這個檢查來避免這個三元組? – scarywolfman

+0

或者我應該在這裏處理默認情況?我想通過使用對象字面量我會避免有一個默認情況下._。 – scarywolfman

+0

@scarywolfman我不這麼認爲。即使Redux的文檔建議大致相同的代碼[減少reducer樣板](https://redux.js.org/docs/recipes/ReducingBoilerplate.html#generating-reducers),儘管更具可讀性。我認爲它很好。 – Li357

板凳
0
1

@ Li357是正確的,爲什麼你會得到這樣的錯誤。我想提出一個替代解決問題的辦法:

const setView = state => payload => ({ ...state, view: payload }); 

const reducers = { 
    SET_VIEW: setView 
}; 

const noop = state =>() => state; 

export default (state = initialState, action) => (reducers[action.type] || noop)(state)(action.payload); 

這裏的竅門是(reducers[action.type] || noop)部分,將使用一個noop處理程序,如果沒有爲動作類型的已知處理程序。它所做的就是返回當前狀態。

+0

生病了!謝謝 – scarywolfman